Funziona su un prompt della shell (bash, dash):
[ -z "" ] && echo A || echo B
A
Tuttavia, sto provando a scrivere uno script di shell POSIX , inizia così:
#!/bin/sh
[ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1
readonly raw_input_string=${1}
[ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1
E non so perché, ma non ricevo il messaggio :
L'argomento dato è vuoto.
se chiamo lo script in questo modo:
./test_empty_argument ""
Perché?
if [ X”” = X”$var” ] ; then echo isempty ; fi
[ "" = "$var" ]
funzionerebbe benissimo; una stringa vuota tra virgolette non verrà rimossa dall'elenco degli argomenti di [
. Ma non è nemmeno necessario, perché funziona [ -z "$var" ]
anche bene.