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
;setelahexitdan - 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.