Bash tidak memperlakukan [atau ]karakter (sendiri) berbeda dari huruf alfabet.
Dalam hal ini bash melihat "kata" [,, dan pergi mencari perintah dengan nama itu. Jika Anda melihat di sistem file Anda, Anda mungkin akan menemukan /bin/[(atau /usr/bin/[) ada sebagai file yang dapat dieksekusi. Seperti yang terjadi, bash juga menyediakan versi bawaan (demi efisiensi), tapi itu hanya detail implementasi.
The [perintah (seperti dalam, dieksekusi dengan nama itu), memiliki aturan bahwa parameter terakhir yang Anda lulus untuk itu harus ]atau yang lain itu melempar kesalahan. Ini mungkin sebagian karena itu menyenangkan secara estetika, tetapi juga berfungsi untuk melindungi Anda dari perintah yang terpotong secara tidak sengaja, yang bagus.
Fakta bahwa ini tidak istimewa adalah mengapa Anda tidak bisa menghilangkan ruang putih sebelum dan sesudah [atau ].
Pengecualian :
- Ketika
[dan ]terjadi dalam format yang benar dalam kata yang sama, misalnya [a-z], maka itu adalah khusus dan aturan globbing bash berlaku.
- The
[[perintah adalah khusus dan dapat melakukan banyak hal [tidak dapat (dan parameter dalam [[ .. ]]diproses secara berbeda, seperti juga beberapa jeda baris). Yang bersesuaian ]]juga istimewa, karena merupakan kata yang dilindungi undang-undang yang tidak boleh berupa nama perintah, dan mengakhiri pemrosesan khusus yang mengikuti [[kata kunci.
[adalah (juga) perintah mandiri: -rwxr-xr-x 1 root 39552 3 Des 18:14 / usr / bin / [Meskipun mungkin ada juga built-in "paralel", seperti ada untuk misalnyakill. Pada beberapa sistem,testperintahnya adalah tautan simbolis ke[atau sebaliknya. AFAIK,]tidak berarti apa-apa dengan sendirinya, tetapi diterima untuk "menutup" a[- tetapi lebih karena alasan "estetika".