Klasörde /bin
bir [
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 [ --help
iş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 , öyletest
olmasınexpr
, öyle olmalıman test