[ "$1" = "" ]
dan [ -z "$1" ]
persis sama dalam bash dan shell yang sesuai dengan POSIX lainnya. (Perhatikan bahwa harus ada spasi di setiap sisi tanda kurung, kecuali jika ada karakter konstituen non-kata suka ;
.)
[
adalah shell built-in seperti yang lain; bahkan bisa juga dieja test
(satu-satunya perbedaan antara keduanya adalah yang [
membutuhkan ]
argumen terakhir). Jadi, jika Anda menjalankan [ "$1" = "" ]
dengan $1
memperluas ke -z
, operator uji melihat tiga argumen: -z
, =
dan string kosong. Beberapa cangkang Bourne yang lebih tua kadang-kadang menimbulkan kesalahan parse ketika sebuah operan tampak seperti operator dengan cara ini, bahkan jika tidak ada ambiguitas dalam ekspresi lengkap. Saya tidak tahu apakah ada versi yang benar-benar memiliki masalah dengan ungkapan khusus ini, tetapi ekspresi yang lebih kompleks dapat membuangnya. Mungkin juga ada versi yang bermasalah dengan kata-kata kosong; ini juga tidak akan mendukung [ -z "$1" ]
. Idiom shell yang umum adalah[ x"$1" = x"" ]
. Ini menghindari risiko memiliki operan diurai sebagai operator karena tidak ada operator yang memulai dengan surat.
Di ksh, bash dan zsh, Anda dapat menggunakan sintaks braket ganda [[ -z $1 ]]
,. Sintaks yang lebih baru ini (berasal dari akhir 1980-an daripada pertengahan 1970-an) menghilangkan risiko memiliki operan diurai sebagai operator dengan menggunakan konstruksi sintaksis khusus daripada built-in biasa. Operator harus muncul secara harfiah, tidak dikutip dalam kurung ganda, dan Anda tidak perlu menggandakan ekspansi variabel penawaran.