linux - portable - picard tag
Verifica si una condiciĆ³n es falsa (4)
Además de las evaluaciones matemáticas de bash, puede usar expresiones booleanas en lugar de if
:
[max@localhost:~] $ (( 0 == 0 )) && echo True || echo False
True
[max@localhost:~] $ (( 0 != 0 )) && echo True || echo False
False
Parece ser una pregunta fácil, me pregunto por qué Google no dio nada útil, ni en StackOverflow, ni en tutoriales. Solo necesito verificar usando bash que una condición es falsa.
De lo que encontré lo intenté
if ! [ 0==2 ]; then echo Hello; fi
y
if [ ! 0==2 ]; then echo Hello; fi
ninguno de ellos imprime Hola .
Solo encontré dos preguntas similares, pero la respuesta final en ambos casos fue el código reestructurado para no usar la condición "falsa".
Para las evaluaciones matemáticas use (( ))
en bash. Para uso de texto [[ ]]
.
if (( $i == 0 )); then
echo "i is 0"
else
echo "i is unequal 0"
Quieres decir:
if ! [ 0 == 2 ]; then
echo Hello;
fi
Le faltaba espacio alrededor del operador de igualdad.
Este podría ser el momento de leer http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html , especialmente las secciones sobre si los demás y los operadores. Normalmente lo tengo abierto cuando escribo guiones.
Si está utilizando el comando de test
( [..]
) puede usar la opción de comparación para enteros: -eq
, igual y -ne
, no iguales.
if [ 0 -eq 2 ]; then echo true ; else echo false ; fi # false
if [ 0 -eq 0 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 2 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 0 ]; then echo true ; else echo false ; fi # false
En bash, el operador [...]
es el equivalente de la test
, un comando que verifica los tipos de archivos y compara los valores; test es un comando interno: si le preguntas a tu caparazón con type [
it will answer [ is a built in shell command
. También puede encontrar el binario en /usr/bin/[
.
El SINOPSIS es test EXPRESSION
, ya que puede leer de la man test
o de la info coreutils test invocation
de info coreutils test invocation
.
Una EXPRESIÓN omitida se convierte en falso. De lo contrario, EXPRESSION es verdadero o falso y establece el estado de salida.
Este es un extracto del hombre que ayuda a comprender un poco mejor
(EXPRESIÓN) EXPRESIÓN es verdadera. Por lo tanto, es fácil incurrir en el error de considerar como una operación
0==1
. (La operación es0 == 1
con espacios,0==1
es una expresión).! EXPRESIÓN EXPRESIÓN es falso.
- ...
- INTEGER1 -eq INTEGER2 INTEGER1 es igual a INTEGER2
- INTEGER1 -ne INTEGER2 INTEGER1 NO es igual a INTEGER2
Desde la info coreutils test invocation
, puede leer sobre el estado de salida de la prueba.
Estado de salida:
0 if the expression is true,
1 if the expression is false,
2 if an error occurred.