tagger tag portable picard musicbrainz kid3 brainz linux bash shell unix condition

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".



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 es 0 == 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.