Buscar..
Espacio en blanco al asignar variables
El espacio en blanco importa cuando se asignan variables.
foo = 'bar' # incorrect foo= 'bar' # incorrect foo='bar' # correct
Los dos primeros darán como resultado errores de sintaxis (o peor, la ejecución de un comando incorrecto). El último ejemplo establecerá correctamente la variable $foo
en el texto "barra".
Falta la última línea en un archivo
El estándar de C dice que los archivos deben terminar con una nueva línea, por lo que si EOF aparece al final de una línea, es posible que algunos comandos no pasen por alto esa línea. Como ejemplo:
$ echo 'one\ntwo\nthree\c' > file.txt $ cat file.txt one two three $ while read line ; do echo "line $line" ; done < file.txt one two
Para asegurarse de que esto funcione correctamente en el ejemplo anterior, agregue una prueba para que continúe el ciclo si la última línea no está vacía.
$ while read line || [ -n "$line" ] ; do echo "line $line" ; done < file.txt one two three
Los comandos fallidos no detienen la ejecución del script
En la mayoría de los lenguajes de script, si falla una llamada de función, puede lanzar una excepción y detener la ejecución del programa. Los comandos de Bash no tienen excepciones, pero sí tienen códigos de salida. Sin embargo, un código de salida distinto de cero indica un error, un código de salida distinto de cero no detendrá la ejecución del programa.
Esto puede llevar a situaciones peligrosas (aunque se admiten) como las siguientes:
#!/bin/bash
cd ~/non/existent/directory
rm -rf *
Si el cd
-ing a este directorio falla, Bash ignorará el error y pasará al siguiente comando, limpiando el directorio desde donde ejecutó el script.
La mejor manera de lidiar con este problema es hacer uso del comando set :
#!/bin/bash
set -e
cd ~/non/existent/directory
rm -rf *
set -e
le dice a Bash que salga de la secuencia de comandos inmediatamente si algún comando devuelve un estado distinto de cero.