Ini tidak begitu banyak sehingga tidak portabel, tetapi bahwa tidak ada [implementasi di mana itu dapat diandalkan ketika melewati lebih dari 4 argumen.
Bahkan dalam bash:
$ ALTNAMES='=' bash -c '[ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ]'
bash: line 0: [: too many arguments
Bagian terkait menyatakan:
> 4 argumen :
Hasilnya tidak ditentukan.
[OB XSI] [Opsi Mulai] Pada sistem yang sesuai dengan XSI, kombinasi primary dan operator harus dievaluasi menggunakan aturan presedensi dan asosiatif yang dijelaskan sebelumnya. Selain itu, perbandingan primer dengan biner '=' dan "! =" Akan memiliki prioritas lebih tinggi daripada primer apa pun. [Opsi Berakhir]
-adan -oharus dilarang. Cara yang benar adalah menggunakan operator shell&& dan sebagai gantinya:||
if [ -n "$foo" ] && [ -n "$bar" ]; then
Saya bahkan merasa lebih terbaca.