Próbuję uruchomić następujący skrypt powłoki, który ma sprawdzić, czy łańcuch nie jest ani spacji, ani pusty. Jednak otrzymuję taki sam wynik dla wszystkich 3 wymienionych łańcuchów. Próbowałem również użyć składni "[[", ale bez skutku.Sprawdź, czy ciąg nie jest pusty, czy spacja w skrypcie powłoki
Oto mój kod:
str="Hello World"
str2=" "
str3=""
if [ ! -z "$str" -a "$str"!=" " ]; then
echo "Str is not null or space"
fi
if [ ! -z "$str2" -a "$str2"!=" " ]; then
echo "Str2 is not null or space"
fi
if [ ! -z "$str3" -a "$str3"!=" " ]; then
echo "Str3 is not null or space"
fi
otrzymuję następujący wynik:
# ./checkCond.sh
Str is not null or space
Str2 is not null or space
Wielkie dzięki, działa. Zastanawiam się jednak, dlaczego zlecenie nie korzysta z przestrzeni, podczas gdy porównanie ma miejsce. –
^^ To jest składnia. Pierwsze słowo w wierszu poleceń to polecenie, a kolejne to argumenty. 'var = value [command [args]]' to składnia, w której zmiennej przypisuje się wartość. dla porównania, '[' ('/ usr/bin/[') jest poleceniem i wymaga od zmiennych 1,! = i var2 3 oddzielnych argumentów. var1! = var2 jest pojedynczym argumentem. – anishsane
@anishsane Wielkie dzięki za szczegóły, otrzymuję je teraz =) –