Programaci贸n Shell
Apuntes sobre programaci贸n shell.
Ejecutar scripts
Agregar shebang, es la primera linea del script y es el path absoluto del int茅rprete de comandos
#!/bin/bash
Para encontrar el path a tu shell
which bash
Ejemplo de script b谩sico
#!/bin/bash
echo "Hoy es " `date`
echo -e "\ningresa la ruta al directorio"
read the_path
echo -e "\n tu ruta tiene los siguientes archivos y carpetas: "
ls $the_path
Para hacer el script ejecutable, asigna permisos de ejecuci贸n
chmod u+x script.sh
Ejecutar el script
bash script.sh
sh script.sh
./script.sh
Comentarios
Los comentarios empiezan con #, Ejemplo:
# Esto es un comentario
Variables
# Asigancion
nombre=valor
# Uso
echo $nombre
Entradas y salidas en scripts
Entradas
- Leer la entrada del usuario y almacenarlo en una variable, usamos
read
#!/bin/bash
echo -e "Introduce un n煤mero"
read number
echo -e "\n El numero introducido es: $number"
- Leer un archivo
#!/bin/bash
while read linea
do
echo $linea
done < input.txt
- Argumentos
Los argumentos se indican con $x donde x es el orden del argumento
#!/bin/bash
echo "Hello, $1 $2!"
A la hora de ejecutar el script le pasas los argumentos
bash script.sh Rub茅n Gonz谩lez
# Output: Hello, Rub茅n Gonz谩lez
Salidas
- Imprimir por terminal
echo "Hola mundo"
echo -e "Hola mundo\nQue tal??" # Para interpretar saltos de l铆neas y otros car谩cteres especiales
- Escribir a un archivo
echo "Esto es un texto" > output.txt
- Adjuntar a un archivo
echo "Esto es un texto" >> output.txt
-
Redireccionando la salida
-
Escribir a un archivo
ls > files.txt
Condicionales
if - elif - else
#!/bin/bash
echo "Por favor ingresa un numero: "
read num
if [ $num -gt 0 ]; then
echo "$num es positivo"
elif [ $num -lt 0 ]; then
echo "$num es negativo"
else
echo "$num es cero"
fi
if [ $num -gt 0 -a $num -le 17 ]
echo -e "\nEres menor de edad"
fi
case
#!/bin/bash
fruta="manzana"
case $fruta in
"manzana")
echo "Este es una fruta roja."
;;
"banana")
echo "Este es una fruta amarilla."
;;
"orange")
echo "Este es una fruta naranja."
;;
*)
echo "Fruta desconocida."
;;
esac
Bucles
while
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
bucle for
#!/bin/bash
for i in {1..5}
do
echo $i
done
Depuraci贸n
Establecer la opci贸n set -x
Establecer set -x al cominezo del script imprimir谩 que l铆nea esta ejecutando en cada momento
#!/bin/bash
set -x
# Resto del script
Establecer la opci贸n set -e
Si quieres que tu escript salga inmediatamente cuando falle, usa la opcion set -e.
#!/bin/bash
set -e
# Resto del script
Verificar el c贸digo de salida
Cuando bash encuentra un error, pone un c贸digo de salida que indica la naturaleza del error. Puedes verificar el c贸digo de salida del comando m谩s reciente usando la variable $?. Un valor de 0 inica 茅xito, mientras que cualquier otro valor indica un error.
Logs de cron
Puedes encontrar los logs de cron en:
/var/log/syslog