He tenido resultados contradictorios en esta área yo mismo. Aquí están los resultados de mis experimentos empíricos. En primer lugar, alguna ' teoría ' sobre los comandos bash o * nix:
- ÉXITO == 0 ... a saber. sin código de estado de error)
- FAIL! = 0 ...... algún código de estado
Ejemplo:
if ls -lt /nonexistantdir
then
echo "found"
else
echo "FAIL"
fi
#
echo
ls -lt /nonexistantdir; echo "status = $?"
echo "status = $?"
Salida:
ls: cannot access '/nonexistantdir': No such file or directory
FAIL...
ls: cannot access '/nonexistantdir': No such file or directory
status = 2
Como se muestra, el ls
comando devuelve el código de estado = 2. Cuando intenta un directorio válido, el estado es cero ( 0 ). No es lo mismo que casi todos los demás idiomas.
regla # 1 - Hacer ...
- VERDADERO == 0
- FALSO! = 0
Debemos recordar que estamos probando códigos de error en una if
declaración Bash . Configuré constantes, o puedes usar shell true
o false
comandos.
TRUE=0
FALSE=1
# valid number function
#
valNum()
{
flag=$TRUE
if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then
echo "Invalid Number"
flag=$FALSE
fi
return $flag
}
# later on ...
#
if validNum Abc
then
echo "Lucky number"
else
echo "Not lucky."
fi
y salida:
Invalid Number
Not lucky.
Sin embargo, le sugiero que dé un voto positivo a @Gilles porque su respuesta es la correcta. Solo quería obtener el lado simplista en ePaper.
Solo otra cosa, el test
comando. Esto se ve así:
[[ some-expression ]];
La mayor parte del tiempo Y por ejemplo:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
Cero (0) siendo cierto . ¿Por qué? Bueno, la página del manual dice que un solo argumento es ' verdadero ' cuando NO ES NULO.
referencias: