control de flujo / testing
- más información: http://www.ibm.com/developerworks/library/l-bash-test/index.html
- test y || &&
- se pueden concatenar comandos con || (OR) o con && (AND)
- test es equivalente al
if
, pero no permite bloques de comandos - ejemplos:
test -x /usr/sbin/anacron || exit 0
→ comprueba la existencia del fichero y si devuelvefalse
, ejecuta la segunda partetest -x /usr/sbin/anacron && exit 0
→ comprueba la existencia del fichero y si devuelvetrue
, ejecuta la segunda parte
- if
- sintaxis:
if [ -f /etc/passwd ]; then …. fi
- parámatros test de ficheros
- -f → comprueba si existe fichero
- -d → comprueba si existe directorio
- -z «$VAR» → comprueba si la variable está vacía
- -e o -a → existe
- -h → comprueba si existe el link simbólico
- -p → comprueba si existe la tubería (pipe)
- -r → si el fichero el legible (R–)
- -w → si el fichero el escribible (-W-)
- -s → si el fichero no está vacío
- parámetros test de comparación de ficheros
- -nt → fichero1 más reciente que fichero2
- -ot → fichero1 más viejo que fichero2
- -ef → fichero1 es un hard link a fichero2
- concatenar expresiones
- -o → OR
if [-f /etc/passwd -o -f /etc/shadow ]; then …. fi
- -a → AND
if [-f /etc/passwd -a -f /etc/shadow ]; then …. fi
- for
for ip in `seq 1 254`; do ssh root@10.1.1.${ip} '/sbin/shutdown -r now'; done