Bazı tarihi kabuklar [ -n = "" ]
, ilk işlenenin =
bir operatör gibi göründüğü yerlerin kafasını karıştırabilen ve bunu ayrıştırma [ -n = ]
veya sözdizimi hatasına neden olabilecek çok basit bir çözümleyici uyguladı . Olarak [ "x$1" = x"" ]
, x
önek teminat altın x"$1"
muhtemelen operatör gibi bakmak ve tek yolu bu yüzden bu testi ayrıştırabilir kabuk muamele etmektir olamaz =
ikili operatör olarak.
Tüm modern mermiler ve hatta hala daha eski mermiler hala çalışır durumda olsa bile, 4 kelimeye kadar tüm test ifadelerinin doğru şekilde ayrıştırılmasını zorunlu kılan POSIX kurallarına uyun . Yani [ -z "$1" ]
eğer test uygun bir yoldur $1
boş ve [ "$x" = "$y" ]
iki değişkenin eşitliğini test etmek için uygun bir yoldur.
Bazı mevcut mermiler bile daha uzun ifadelerle karışabilir ve birkaç ifade aslında belirsizdir, bu nedenle daha uzun boole testleri oluşturmak için -a
ve -o
operatörlerini kullanmaktan kaçının ve bunun yerine [
kabuğun kendi &&
ve ||
boole operatörlerine ayrı çağrılar kullanın .
sh
ticari Unicilere dayanan bazı ksh88'ler hala sorunlu. Detaylar için buraya bakınız.