Negar una condición en Shell Script
Para hacer una comprobación en Shell Script y saber si algo es verdadero o falso y, en función de este resultado ejecutar un bloque de código u otro, usamos la estructura de control if en combinación con el comando test, que muchas veces lo sustituimos por [ condicion ].
Por ejemplo, para saber si un fichero existe, podemos comprobarlo con:
#!/bin/bash if [ -e fichero.txt ] then echo El fichero existe fi
Hay veces que ejecutamos un bloque de instrucciones si existe u otro bloque si no existe:
#!/bin/bash if [ -e fichero.txt ] then echo El fichero existe else echo El fichero no existe fi
Pero otras veces lo único que nos interesa es si no se cumple esa condición. Para eso tenemos el modificador !
, que niega la condición, es decir, que devuelve verdadero sólo si la condición es falsa.Por ejemplo, siguiendo el ejemplo anterior, si queremos que se ejecute un bloque de código si no existe el fichero, pero si existe, que no realice ninguna acción, podemos negar la comparación añadiendo ! al comienzo de la comparación:
#!/bin/bash if [ ! -e fichero.txt ] then echo El fichero no existe fi
Nótense los espacios entre el corchete y la exclamación y el final de la comparación y el cierre del corchete.