Jawaban lain telah mencakup pertanyaan langsung dengan baik, tetapi Anda mungkin juga tertarik menggunakan set -e
. Dengan itu, setiap perintah yang gagal (di luar konteks tertentu seperti if
tes) akan menyebabkan skrip dibatalkan. Untuk skrip tertentu, ini sangat berguna.
Coba:
my_command || { echo 'my_command failed' ; exit 1; }
Empat perubahan:
- Ubah
&&
ke||
- Gunakan
{ }
di tempat( )
- Perkenalkan
;
setelahexit
dan - spasi setelah
{
dan sebelum}
Karena Anda ingin mencetak pesan dan keluar hanya ketika perintah gagal (keluar dengan nilai bukan nol), Anda memerlukan ||
bukan &&
.
cmd1 && cmd2
akan menjalankan cmd2
saat cmd1
berhasil(nilai keluar 0
). Dimana
cmd1 || cmd2
akan menjalankan cmd2
saat cmd1
gagal(nilai keluar bukan nol).
Menggunakan ( )
membuat perintah di dalamnya berjalan di sub-shell dan memanggil exit
dari sana menyebabkan Anda keluar dari sub-shell dan bukan shell asli Anda, sehingga eksekusi berlanjut di shell asli Anda.
Untuk mengatasinya gunakan { }
Dua perubahan terakhir diperlukan oleh bash.