Menangani Error dan Exit Code dalam Bash: Tips dan Trik yang Wajib Kamu Tahu!
Pernah ngalamin script Bash kamu tiba-tiba berhenti dengan error atau keluar dengan kode aneh? Tenang, gak perlu panik! Di artikel ini, kita bakal bahas cara menangani error dan exit code dalam Bash biar skrip kamu jadi makin solid dan bisa diandalkan. Yuk, simak tips dan triknya!
Apa Itu Exit Code?
Setiap program atau perintah yang dijalankan di shell Linux atau Unix punya exit code, juga dikenal sebagai status keluar atau return status. Exit code ini adalah angka yang dikembalikan setelah perintah selesai dijalankan. Biasanya, exit code 0 berarti sukses, sedangkan angka lain menandakan ada error.
Kenapa Exit Code Penting?
- Bikin Kondisi: Kamu bisa pake exit code bikin kondisi dalam skrip kamu, misalnya “kalau ini gagal, lakukan yang lain”.
- Debugging: Membantu kamu ngerti kapan dan kenapa perintah gagal.
- Otomatisasi: Skrip otomatis bisa mengambil keputusan berdasarkan hasil perintah sebelumnya.
Cara Cek Exit Code
Untuk ngecek exit code terakhir di Bash, pake echo $?
:
ls /tmp
echo $?
Kalau ls
sukses, $?
akan jadi 0. Tapi, kalau misalnya direktori gak ada, $?
akan return angka lain (biasanya 1 untuk kesalahan umum).
Contoh Exit Code Umum
- 0: Sukses
- 1: Error umum
- 2: Salah pake perintah (misalnya
cp
dengan opsi yang gak ada) - 126: Permission denied (gak boleh diakses)
- 127: “Command not found”
- 128+N: Program terminated oleh signal N (misalnya 130 untuk
SIGINT
, biasanya karenaCtrl+C
) dan masih banyak lagi.
Cara Tangani Error dalam Bash
Conditional Execution: Kamu bisa menggunakan
&&
dan||
ngelakuin perintah selanjutnya berdasarkan keberhasilan atau kegagalan perintah sebelumnya.Contoh:
ls /directory && echo "Sukses!" || echo "Gagal!"
- Kalau
ls
sukses,echo "Sukses!"
dijalankan. - Kalau gagal,
echo "Gagal!"
dijalankan.
- Kalau
if
Statements: Pakeif
untuk penanganan error yang lebih kompleks.Contoh:
if ls /directory; then echo "Sukses!" else echo "Gagal dengan exit code: $?" fi
trap
Command: Buat nangkep signal atau error, dan jalankan fungsi atau perintah tertentu. Misalnya, bikin skrip bersih-bersih kalau ada yang gagal atau kalau pengguna nginjekCtrl+C
.Contoh:
trap "echo 'Ada yang error nih!' >&2; exit 1" ERR
Setelah ini, kalau ada perintah yang return exit code bukan 0, pesan error akan dicetak dan skrip keluar dengan code 1.
set -e
(atauset -o errexit
): Ini buat nge-set skrip kamu agar langsung berhenti kalau ada perintah yang gagal (exit code bukan 0).Contoh:
set -e ls /directory echo "Ini cuma dijalankan kalau ls sukses."
Kalau
ls
gagal, skrip langsung berhenti, danecho
gak dijalankan.set -u
(atauset -o nounset
): Ini bakal bikin skrip kamu berhenti kalau ada variable yang belum di-set.Contoh:
set -u echo $MY_VAR # Kalau MY_VAR gak di-set, skrip berhenti.
Berguna banget buat cegah variable typo atau kelewat deklarasi.
set -o pipefail
: Biasanya, pipeline (perintah yang dihubungkan dengan|
) cuma ngasih exit code perintah terakhir. Denganpipefail
, pipeline akan gagal kalau salah satu perintah di pipeline gagal.Contoh:
set -o pipefail grep "something" file.txt | sort
Kalau
grep
gagal (misalnya gak nemu kata “something”), seluruh pipeline bakal gagal.
Ngerti dan ngatur exit code dalam skrip Bash itu penting banget biar skrip kamu lebih kuat dan bisa dihandalkan. Dengan pake conditional execution, if
statements, trap
, dan opsi set
, kamu bisa atur banyak skenario penanganan error. Jadi, skrip kamu gak cuma jalan kalau semua lancar, tapi juga bisa ngatasin kegagalan dengan elegan.
Jangan lupa latihan dan coba-coba biar makin jago! Kalau ada pertanyaan, silakan tanya di komentar. Semoga bermanfaat!