Menangani Error dan Exit Code dalam Bash

calendar_today
schedule 3 min read

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?

  1. Bikin Kondisi: Kamu bisa pake exit code bikin kondisi dalam skrip kamu, misalnya “kalau ini gagal, lakukan yang lain”.
  2. Debugging: Membantu kamu ngerti kapan dan kenapa perintah gagal.
  3. Otomatisasi: Skrip otomatis bisa mengambil keputusan berdasarkan hasil perintah sebelumnya.

Cara Cek Exit Code

Untuk ngecek exit code terakhir di Bash, pake echo $?:

code
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 karena Ctrl+C) dan masih banyak lagi.

Cara Tangani Error dalam Bash

  1. Conditional Execution: Kamu bisa menggunakan && dan || ngelakuin perintah selanjutnya berdasarkan keberhasilan atau kegagalan perintah sebelumnya.

    Contoh:

    code
    ls /directory && echo "Sukses!" || echo "Gagal!"
    • Kalau ls sukses, echo "Sukses!" dijalankan.
    • Kalau gagal, echo "Gagal!" dijalankan.
  2. if Statements: Pake if untuk penanganan error yang lebih kompleks.

    Contoh:

    code
    if ls /directory; then
       echo "Sukses!"
    else
       echo "Gagal dengan exit code: $?"
    fi
  3. 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 nginjek Ctrl+C.

    Contoh:

    code
    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.

  4. set -e (atau set -o errexit): Ini buat nge-set skrip kamu agar langsung berhenti kalau ada perintah yang gagal (exit code bukan 0).

    Contoh:

    code
    set -e
    ls /directory
    echo "Ini cuma dijalankan kalau ls sukses."

    Kalau ls gagal, skrip langsung berhenti, dan echo gak dijalankan.

  5. set -u (atau set -o nounset): Ini bakal bikin skrip kamu berhenti kalau ada variable yang belum di-set.

    Contoh:

    code
    set -u
    echo $MY_VAR  # Kalau MY_VAR gak di-set, skrip berhenti.

    Berguna banget buat cegah variable typo atau kelewat deklarasi.

  6. set -o pipefail: Biasanya, pipeline (perintah yang dihubungkan dengan |) cuma ngasih exit code perintah terakhir. Dengan pipefail, pipeline akan gagal kalau salah satu perintah di pipeline gagal.

    Contoh:

    code
    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!

A

Written by Ariful

Full-stack engineer obsessed with web performance.