Mengapa "tidak pernah menggunakan -aatau -ooperator"?
Karena mereka mungkin amibigu dan karenanya mereka tidak kompatibel dengan POSIX :
Ekstensi XSI yang menentukan primer -a dan -o biner dan operator '(' dan ')' telah dianggap usang. (Banyak ekspresi yang menggunakannya didefinisikan secara ambigu oleh tata bahasa tergantung pada ekspresi spesifik yang sedang dievaluasi.) Skrip yang menggunakan ekspresi ini harus dikonversi ke bentuk yang diberikan di bawah ini. Meskipun banyak implementasi akan terus mendukung formulir-formulir usang ini, skrip harus sangat berhati-hati ketika berhadapan dengan input yang disediakan pengguna yang dapat dikacaukan dengan ini dan primary dan operator lainnya. Kecuali pengembang aplikasi mengetahui semua kasus yang menghasilkan input ke skrip, doa seperti:
test "$1" -a "$2"
harus ditulis sebagai:
test "$1" && test "$2"
Bagaimana saya bisa "menggunakan beberapa [perintah dan operator &&dan ||shell)"?
Dengan melakukan beberapa tes dan merantai mereka menggunakan operator tersebut; sebagai contoh:
[ 0 -eq 0 -a \( 0 -eq 1 -o 1 -eq 1 \) ]
dapat ditulis ulang sebagai yang setara:
[ 0 -eq 0 ] && ([ 0 -eq 1 ] || [ 1 -eq 1 ])
atau lebih baik:
[ 0 -eq 0 ] && { [ 0 -eq 1 ] || [ 1 -eq 1 ]; }
(dan)operator yang memerintahkan grup? Jika mereka usang, apa penggantinya? (2) Harustest "$1" -a "$2"diganti dengantest "$1" && test "$2", atau oleh((test "$1" && test "$2"))? Bukankah kita membutuhkannya((..))?