Kem Intensif DevOps · Pelajaran

Penyahpepijatan Skrip Bash (set -x, trap)

Temui kaedah untuk menyahpepijat skrip Bash, termasuk menjejak pelaksanaan dan menggunakan 'trap' untuk pengendalian ralat.

Pelajaran 1 daripada 411 langkah

Penyahpepijatan Skrip Bash (set -x, trap) ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Mengapa Menyahpepijat Skrip Anda?

Malah skrip yang terbaik pun boleh mengandungi pepijat! Penyahpepijatan ialah proses mencari dan membetulkan ralat ini.

Ini ialah kemahiran penting bagi mana-mana pembangun kerana membantu anda memahami perkara yang dilakukan oleh skrip anda langkah demi langkah serta mengenal pasti bahagian yang mungkin tidak berfungsi dengan betul.

Dalam pelajaran ini, anda akan mempelajari alat Bash yang berkuasa untuk menjejak pelaksanaan dan mengendalikan kejadian yang tidak dijangka.

Jejaki Skrip Anda dengan `set -x`

Salah satu alat penyahpepijatan Bash yang paling mudah dan berkesan ialah set -x. Ia mengaktifkan penjejakan perintah.

  • Apabila aktif, Bash mencetak setiap perintah dan argumennya kepada ralat piawai (biasanya bermaksud terminal anda) tepat sebelum melaksanakannya.
  • Output ini termasuk keadaan pemboleh ubah selepas pengembangan, memberikan anda gambaran yang jelas tentang perkara yang akan dilakukan oleh Bash.
  • Ia ibarat melihat skrip anda dilaksanakan dalam gerak perlahan!

Melihat Cara `set -x` Berfungsi

Mari lihat set -x beraksi. Perhatikan cara cangkerang mencetak setiap perintah selepas pengembangan pemboleh ubah, dengan awalan tanda +.

Cuba jalankan 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 Jejak

Apabila set -x diaktifkan, anda akan melihat baris yang bermula dengan simbol +. Ini menunjukkan output jejak.

  • + diikuti oleh perintah yang akan dilaksanakan oleh Bash, bersama argumennya selepas sebarang penggantian pemboleh ubah atau perintah.
  • Ini amat berguna untuk melihat nilai tepat pemboleh ubah dan perintah sebenar yang sedang dijalankan.
  • Ia membantu mengenal pasti isu seperti laluan yang salah, pemboleh ubah kosong atau struktur perintah yang tidak disengajakan.

Mengawal Skop `set -x`

Anda tidak semestinya perlu menjejaki keseluruhan skrip. Anda boleh mengaktifkan set -x untuk bahagian tertentu:

  • Gunakan set -x untuk menghidupkan penjejakan.
  • Gunakan set +x untuk mematikan penjejakan.

Ini membolehkan anda menumpukan usaha penyahpepijatan pada bahagian skrip yang bermasalah tanpa dibebani output daripada bahagian yang stabil.

Mengendalikan Peristiwa dengan `trap`

Perintah trap membolehkan anda menangkap isyarat dan peristiwa lain, kemudian melaksanakan perintah apabila perkara tersebut berlaku. Ini amat berguna untuk:

  • Pembersihan: Memastikan fail sementara dipadamkan.
  • Pengendalian ralat: Memberi respons terhadap perintah yang gagal.
  • Keluar dengan teratur: Mengendalikan gangguan pengguna seperti Ctrl+C.

Sintaks asasnya ialah trap 'command_to_execute' SIGNAL_OR_EVENT.

Pembersihan dengan `trap EXIT`

Isyarat pseudo EXIT adalah khas. Perintah yang diperangkap dengan EXIT akan dijalankan tepat sebelum skrip anda ditamatkan, tanpa mengira cara skrip itu keluar (berjaya, gagal atau terganggu).

Ini amat sesuai untuk tugas pembersihan, seperti memadam fail sementara. Cuba jalankan 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 Ralat dengan `trap ERR`

Isyarat pseudo ERR tercetus apabila perintah keluar dengan status bukan sifar (iaitu, perintah tersebut gagal). Ini membolehkan anda melakukan tindakan khusus apabila ralat berlaku.

Nota: trap ERR hanya berfungsi jika perintah itu bukan sebahagian daripada syarat if, while atau until, atau jika nilai pulangannya tidak diperiksa secara jelas (contohnya, 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."

Memberi Respons kepada Isyarat (INT, TERM)

trap juga boleh menangkap isyarat Linux piawai. Isyarat yang biasa termasuk:

  • INT (Gangguan): Dihantar apabila anda menekan Ctrl+C.
  • TERM (Penamatan): Permintaan untuk menamatkan proses dengan teratur.

Memerangkap isyarat ini membolehkan skrip anda melakukan pembersihan atau menyimpan keadaan sebelum ditutup, bukannya 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

Semakan Penyahpepijatan

Mari semak pemahaman anda tentang teknik penyahpepijatan Bash.

Rumusan: Menyahpepijat Skrip Anda

Syabas! Anda telah mempelajari alat penting untuk menyahpepijat skrip Bash anda:

  • set -x: Mengaktifkan penjejakan perintah supaya anda dapat melihat dengan tepat perkara yang dilaksanakan oleh Bash. Gunakan set +x untuk mematikannya.
  • trap: Membolehkan anda melaksanakan perintah sebagai respons kepada peristiwa atau isyarat tertentu.
  • `trap EXIT`: Memastikan tugas pembersihan dijalankan sebelum skrip berakhir.
  • `trap ERR`: Menangkap perintah yang keluar dengan status bukan sifar.
  • `trap INT`/`TERM`: Mengendalikan gangguan pengguna atau permintaan penamatan dengan teratur.

Menguasai teknik ini akan meningkatkan keupayaan anda dengan ketara untuk menyelesaikan masalah dan mencipta skrip Bash yang teguh!

Percuma untuk bermula

Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
142
Pelajaran
568

Soalan Lazim

Adakah pelajaran “Penyahpepijatan Skrip Bash (set -x, trap)” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Penyahpepijatan Skrip Bash (set -x, trap)”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penyahpepijatan Skrip Bash (set -x, trap)”?

Temui kaedah untuk menyahpepijat skrip Bash, termasuk menjejak pelaksanaan dan menggunakan 'trap' untuk pengendalian ralat. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Penyahpepijatan Skrip Bash (set -x, trap)” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?

Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penyahpepijatan Skrip Bash (set -x, trap)
  2. Pengendalian Ralat dan Status Keluar
  3. Amalan Terbaik Penskripan dan Linting
  4. Menguji Skrip Bash dengan Bats
← Kembali ke Kem Intensif DevOps