Bu bir kabuk (bash, tire) isteminde çalışır:
[ -z "" ] && echo A || echo B
A
Ancak, bir POSIX kabuk komut dosyası yazmaya çalışıyorum , şöyle başlar:
#!/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
Ve nedenini bilmiyorum, ama mesajı almıyorum :
Verilen argüman boş.
Eğer betiği böyle çağırırsam:
./test_empty_argument ""
Neden?
if [ X”” = X”$var” ] ; then echo isempty ; fi
[ "" = "$var" ]
iyi çalışır; alıntılanan boş bir dize, argüman listesinden kaldırılmaz [
. Ama bu da gerekli değil, çünkü [ -z "$var" ]
aynı zamanda iyi çalışıyor.