En mi fiesta de test
tiene una actitud para salir con el estado 0
:BASH: [] (prueba) se comporta unconformly
$ test -n && echo true || echo false
-> true
mientras
$ test -n "" && echo true || echo false
-> false
Significa que cuando no recibe ningún argumento en absoluto, asume que no es cero.
El caso -z
funciona correctamente en su lugar:
$ test -z && echo true || echo false
-> true
$ test -z "" && echo true || echo false
-> true
es éste el comportamiento esperado?
Buena pregunta. Me pregunto también por qué tanto 'test -n' como' test -z' (sin argumentos) tienen éxito. –
¡Preste atención con '&&' y '||'! Pruebe este código: 'toque ~/x && touch/x || echo fail' - si 'touch/x' falla,' fail' se imprimirá! – uzsolt