Klasörde /binbir [program olduğuna her zaman şaşırdım .
Buna benzer bir şey yaptığımızda buna denir if [ something ]mi?
[Programı açıkça bir kabuk içinde çağırarak karşılık gelmesini ister ]ve kapatma braketini sağladığımda, braketler arasına ne taktığım farketmez.
Söylemeye gerek yok, yani ne, çalışmayan bir program hakkında yardım alma konusunda olağan yolu man [ne de [ --helpişler.
man '['benim için iyi çalışıyor - ya alıntı yapmayı unuttun [ya da "eserler" in farklı bir tanımına sahipsin.
[argümanlarını değerlendirir, bu yüzden aralarında boşluk olması gerekir. [ a=b ]Bir karşılaştırma değil: her zaman doğru olacaktır (tek bir dizedir: "a = b", her zaman doğru olarak değerlendirilir ) Ve argüman sayısını 4 olarak sınırlamanız gerekir (en son uygulamalar daha fazla izin verecek olsa da .. 4 ile sınırlandırılması onu daha taşınabilir kılar.Örneğin: [ "a" = "b" ]zaten 4 argüman var: "a" "=" "b" ve gerekli olmayan test argümanı: "]". Daha fazlasına ihtiyacınız varsa: örneğin zincir testleri:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!kendi kendine ( kaçışmamış ve işaretsiz ) değiştirilmeyecek ve daha da iyi olacaktır if ! [ .... Kullanılan bash genişlemelerinin tümü, !en azından diğer karakterleri içerir
[-builtin bulunduğunu bash(ve muhtemelen diğer kabukları da) ve bunun yerine kullanılabileceğini not etmelisiniz /bin/[. Ayrıca test, birçok sistemde sembolik bir bağlantı olan /bin/[(ya da tam tersi) olan -komut vardır - ama diğerleri için ayrı bir komuttur.
[atıfta bulunur , öyletestolmasınexpr, öyle olmalıman test