Logikanya di sini adalah bahwa Anda menggunakan &&
sudah adalah pengecekan kesalahan. Cara yang sama bash tidak menangani kegagalan dalam if
kondisi layak dibatalkan, bahkan dengan set -e
.
Saat Anda membungkus perintah dalam tanda kurung, Anda sebenarnya menjalankan perintah tersebut di dalam subkulit, jadi skrip itu sendiri hanya melihat kembalinya subkulit itu, yaitu:tidak mengetahui bahwa &&
terlibat sama sekali, sehingga dibatalkan seperti yang Anda harapkan.
Mengutip manual referensi:
Shell tidak keluar jika perintah yang gagal adalah bagian dari daftar perintah segera setelah kata kunci while atau until, bagian dari pengujian dalam pernyataan if, bagian dari perintah apa pun yang dieksekusi dalam &&atau || list kecuali perintah yang mengikuti final &&atau ||, perintah apa pun dalam pipeline kecuali yang terakhir, atau jika status pengembalian perintah dibalik dengan !