Si en un shell script queremos comprobar cualquier cosa y, que el script actúe de manera distinta según el resultado de la comprobación usaremos:
if [ condición ]
then
# instrucciones a ejecutar si la condición es cierta
fi
O si queremos que en caso de que la condición sea falsa ejecute otras instrucciones:if [ condición ]
then
# instrucciones a ejecutar si la condición es cierta
else
# instrucciones a ejecutar en caso de que la condición sea falsa
fi
Y si queremos que vuelva a hacer una comprobación, en caso de que la condición sea cierta o falsa, usaremos:
if [ condición ]
then
# instrucciones a ejecutar si la condición es cierta
elif [ condición ]
then
# instrucciones a ejecutar si la segunda comprobación es cierta
else
# instrucciones a ejecutar si las dos comprobaciones anteriores son falsas
fi
Y podemos incluir tantos if dentro de otros if como queramos.
Para la temática que nos ocupa en este tutorial, comprobaremos:
Si un determinado directorio existe con [ -d $directorio ]
En caso de que queramos comprobar si el directorio no existe, se niega la condición con un signo de exclamación: [ ! -d $directorio ]
Si el directorio tiene algún fichero o directorio [ "$(ls $directorio)" ]
O si el directorio está vacío [ ! "$(ls $directorio)" ]
Vistas las aclaraciones, el código que comprueba si un directorio existe o no y que, en caso de que exista, compruebe si está vacío o no, sería:
if [ ! -d $directorio ]
then
echo "El directorio no existe"else
if [ "$(ls $directorio)" ]
then
echo "el directorio tiene algo" else
echo "el directorio está vacío" fi
fi