Działa to w wierszu poleceń powłoki (bash, myślnik):
[ -z "" ] && echo A || echo B
A
Jednak próbuję napisać skrypt powłoki POSIX , zaczyna się tak:
#!/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
I nie wiem dlaczego, ale nie dostaję wiadomości :
Podany argument jest pusty.
jeśli wywołam skrypt w następujący sposób:
./test_empty_argument ""
Dlaczego?
if [ X”” = X”$var” ] ; then echo isempty ; fi
[ "" = "$var" ]
działałoby dobrze; cytowany pusty ciąg nie zostanie usunięty z listy argumentów [
. Ale to też nie jest konieczne, ponieważ działa [ -z "$var" ]
również dobrze.