Penguasaan Baris Perintah Linux & Penskripan Bash · 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 Penguasaan Baris Perintah Linux & Penskripan Bash percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Penguasaan Baris Perintah Linux & Penskripan Bash, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Penguasaan Baris Perintah Linux & Penskripan Bash 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 Bash 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
22
Pelajaran
88

Soalan Lazim

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

Ya — teks penuh “Penyahpepijatan Skrip Bash (set -x, trap)” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Penguasaan Baris Perintah Linux & Penskripan Bash, tingkat taraf kepada CoddyKit PRO. Kursus Penguasaan Baris Perintah Linux & Penskripan Bash 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 Penguasaan Baris Perintah Linux & Penskripan Bash 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 Penguasaan Baris Perintah Linux & Penskripan Bash?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Penguasaan Baris Perintah Linux & Penskripan Bash 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 Penguasaan Baris Perintah Linux & Penskripan Bash ini?

Ya. Setiap pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash 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 Penguasaan Baris Perintah Linux & Penskripan Bash