Eksik veya Beklenmeyen Jetonlar
Diğer bir yaygın hata, aşağıdaki gibi bir bileşik komutu tamamlamayı unutmaktır. if or süre. Noktalı virgülü kaldırırsak ne olacağına bakalım. test içinde if komut:
#! / Bin / bash
# sorun: yaygın hataları gösteren komut dosyası sayı=1
[ $sayı = 1 ] ise
echo "Sayı 1'e eşittir." Başka
echo "Sayı 1'e eşit değil."
fi
#! / Bin / bash
# sorun: yaygın hataları gösteren komut dosyası sayı=1
[ $sayı = 1 ] ise
echo "Sayı 1'e eşittir." Başka
echo "Sayı 1'e eşit değil."
fi
Sonuç şudur:
[ben@linuxbox ~]$ sorun
/home/me/bin/trouble: 9. satır: beklenmeyen belirteç yakınında sözdizimi hatası
"başka"
/home/me/bin/trouble: 9. satır: "else"
[ben@linuxbox ~]$ sorun
/home/me/bin/trouble: 9. satır: beklenmeyen belirteç yakınında sözdizimi hatası
"başka"
/home/me/bin/trouble: 9. satır: "else"
Yine, hata iletisi, asıl sorundan daha sonra oluşan bir hataya işaret eder. Yaşananlar gerçekten çok ilginç. Hatırladığımız kadarıyla, if bir komut listesini kabul eder ve listedeki son komutun çıkış kodunu değerlendirir. Programımızda bu listenin tek bir komuttan oluşmasını amaçlıyoruz, [, testin eş anlamlısı. NS [ komut, onu takip edenleri bir argüman listesi olarak alır; bizim durumumuzda, dört argüman: $ sayı, 1, =, ve ]. Noktalı virgül kaldırıldığında, kelime sonra sözdizimsel olarak yasal olan argümanlar listesine eklenir. Devamındaki kaçırmak emir de yasaldır. Komutlar listesinde başka bir komut olarak yorumlanır. if bir çıkış kodu için değerlendirecektir. NS başka sonra karşılaşılır, ancak kabuk onu bir ayrılmış kelime (kabuk için özel anlamı olan bir sözcük) ve bir komutun adı değil, dolayısıyla hata mesajı.
Dökümanlar