0Pricing
DevOps Bootcamp · Pelajaran

Men-debug Skrip Bash (set -x, trap)

Temukan metode untuk men-debug skrip Bash, termasuk melacak eksekusi dan menggunakan 'trap' untuk menangani galat.

Men-debug Skrip Bash (set -x, trap) adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Mengapa Men-debug Skrip Anda?

Bahkan skrip terbaik pun dapat memiliki bug! Men-debug adalah proses menemukan dan memperbaiki kesalahan tersebut.

Ini merupakan keterampilan penting bagi setiap pengembang karena membantu Anda memahami apa yang dilakukan skrip Anda langkah demi langkah dan mengetahui bagian yang mungkin mengalami masalah.

Dalam pelajaran ini, Anda akan mempelajari alat Bash yang andal untuk melacak eksekusi dan menangani kejadian yang tidak terduga.

Melacak Skrip Anda dengan `set -x`

Salah satu alat penelusuran kesalahan paling sederhana dan efektif di Bash adalah set -x. Perintah ini mengaktifkan pelacakan perintah.

  • Saat aktif, Bash mencetak setiap perintah beserta argumennya ke galat standar (biasanya berarti terminal Anda), tepat sebelum perintah tersebut dijalankan.
  • Output ini mencakup keadaan variabel setelah perluasan, sehingga Anda dapat melihat dengan jelas tindakan yang akan dilakukan Bash.
  • Ini seperti menyaksikan skrip Anda dijalankan dalam gerakan lambat!

Melihat Cara Kerja `set -x`

Mari kita lihat set -x saat bekerja. Perhatikan bahwa shell mencetak setiap perintah setelah perluasan variabel, dengan awalan tanda +.

Cobalah menjalankan contoh ini:

#!/bin/bash

# Enable command tracing
set -x

NAME="Coddy"
MESSAGE="Hello, $NAME!"

echo $MESSAGE

# This command will intentionally fail
ls -l /nonexistent_directory

# Disable command tracing
set +x

echo "Tracing is now off."

Memahami Output Pelacakan

Saat set -x diaktifkan, Anda akan melihat baris yang diawali simbol +. Ini menunjukkan output pelacakan.

  • Setelah + tercantum perintah yang akan dijalankan Bash, beserta argumennya setelah penggantian variabel atau perintah dilakukan.
  • Hal ini sangat berguna untuk melihat nilai variabel yang sebenarnya dan perintah yang dijalankan secara tepat.
  • Fitur ini membantu menemukan masalah seperti jalur yang salah, variabel kosong, atau struktur perintah yang tidak diinginkan.

Mengontrol Cakupan `set -x`

Anda tidak selalu perlu melacak seluruh skrip. Anda dapat mengaktifkan set -x untuk bagian tertentu:

  • Gunakan set -x untuk mengaktifkan pelacakan.
  • Gunakan set +x untuk menonaktifkan pelacakan.

Dengan demikian, Anda dapat memusatkan upaya penelusuran kesalahan pada bagian skrip yang bermasalah tanpa kewalahan oleh output dari bagian yang stabil.

Menangani Peristiwa dengan `trap`

Perintah trap memungkinkan Anda menangkap sinyal dan peristiwa lainnya, lalu menjalankan perintah saat peristiwa tersebut terjadi. Ini berguna untuk:

  • Pembersihan: Memastikan berkas sementara dihapus.
  • Penanganan kesalahan: Menanggapi perintah yang gagal.
  • Keluar dengan baik: Menangani interupsi pengguna seperti Ctrl+C.

Sintaks dasarnya adalah trap 'command_to_execute' SIGNAL_OR_EVENT.

Pembersihan dengan `trap EXIT`

Sinyal semu EXIT bersifat khusus. Perintah yang dipasang dengan EXIT akan dijalankan tepat sebelum skrip Anda berakhir, apa pun cara skrip tersebut berakhir (berhasil, gagal, atau terinterupsi).

Ini sangat cocok untuk tugas pembersihan, seperti menghapus berkas sementara. Cobalah menjalankan skrip ini:

#!/bin/bash

TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"

# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT

echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"

# Simulate some work
sleep 2

echo "Script logic completed. Exiting..."

Menangkap Kesalahan dengan `trap ERR`

Sinyal semu ERR terpicu saat suatu perintah berakhir dengan status bukan nol (artinya, perintah tersebut gagal). Dengan demikian, Anda dapat melakukan tindakan khusus saat terjadi kesalahan.

Catatan: trap ERR hanya berfungsi jika perintah tersebut bukan bagian dari kondisi if, while, atau until, atau jika nilai kembalinya tidak diperiksa secara eksplisit (misalnya, command || true).

#!/bin/bash

# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR

echo "Starting script with an intentional error..."

# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist

echo "This line will NOT be reached if an error occurs."

Menanggapi Sinyal (INT, TERM)

trap juga dapat menangkap sinyal Linux standar. Beberapa sinyal yang umum adalah:

  • INT (Interupsi): Dikirim saat Anda menekan Ctrl+C.
  • TERM (Penghentian): Permintaan untuk menghentikan proses dengan baik.

Dengan menangkap sinyal-sinyal ini, skrip Anda dapat melakukan pembersihan atau menyimpan keadaan sebelum dimatikan, alih-alih berhenti secara tiba-tiba.

#!/bin/bash

# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT

echo "Running a continuous task. Press Ctrl+C to stop."

while true; do
  echo "Working... $(date)"
  sleep 3
done

Pemeriksaan Penelusuran Kesalahan

Mari periksa pemahaman Anda tentang teknik penelusuran kesalahan Bash.

Ringkasan: Menelusuri Kesalahan Skrip Anda

Bagus sekali! Anda telah mempelajari alat-alat penting untuk menelusuri kesalahan pada skrip Bash:

  • set -x: Mengaktifkan pelacakan perintah, sehingga Anda dapat melihat secara tepat apa yang dijalankan Bash. Gunakan set +x untuk menonaktifkannya.
  • trap: Memungkinkan Anda menjalankan perintah sebagai respons terhadap peristiwa atau sinyal tertentu.
  • `trap EXIT`: Memastikan tugas pembersihan dijalankan sebelum skrip berakhir.
  • `trap ERR`: Menangkap perintah yang berakhir dengan status bukan nol.
  • `trap INT`/`TERM`: Menangani interupsi pengguna atau permintaan penghentian dengan baik.

Dengan menguasai teknik-teknik ini, kemampuan Anda untuk memecahkan masalah dan membuat skrip Bash yang tangguh akan meningkat secara signifikan!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Men-debug Skrip Bash (set -x, trap)” gratis?

Ya — teks lengkap “Men-debug Skrip Bash (set -x, trap)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Men-debug Skrip Bash (set -x, trap)”?

Temukan metode untuk men-debug skrip Bash, termasuk melacak eksekusi dan menggunakan 'trap' untuk menangani galat. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Men-debug Skrip Bash (set -x, trap)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Men-debug Skrip Bash (set -x, trap)
  2. Penanganan Galat & Status Keluar
  3. Praktik Terbaik Pembuatan Skrip & Linting
  4. Menguji Skrip Bash dengan Bats
← Kembali ke DevOps Bootcamp