Pengendalian Ralat dan Status Keluar
Laksanakan pemeriksaan ralat yang kukuh dalam skrip dengan memahami status keluar serta menggunakan 'set -e' dan logik bersyarat.
Pengendalian Ralat dan Status Keluar ialah pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash percuma di CoddyKit. Ini ialah pelajaran 2 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.
Selamat Datang ke Pengendalian Ralat
Dalam pelajaran ini, kita akan menjadikan skrip Bash anda lebih teguh dengan mempelajari cara mengendalikan ralat dengan berkesan.
Bayangkan skrip yang melakukan banyak langkah. Jika satu langkah gagal, anda tentu mahu skrip itu berhenti atau sekurang-kurangnya mengetahui tentang kegagalan tersebut, bukan? Di sinilah pengendalian ralat diperlukan!
Apakah Status Keluar?
Setiap perintah yang anda jalankan dalam cangkerang Linux mengembalikan status keluar (kadangkala dipanggil kod keluar atau kod pulangan).
- Status 0 bermaksud perintah selesai dengan berjaya.
- Status bukan sifar (contohnya, 1, 2, 127) menunjukkan sejenis kegagalan atau ralat.
Ia ibarat lampu isyarat untuk perintah anda!
Menyemak Status Keluar Secara Manual
Anda boleh menyemak status keluar perintah terakhir yang dilaksanakan menggunakan pemboleh ubah khas $?.
Mari cuba satu perintah yang berjaya dan satu perintah yang gagal:
#!/bin/bash
echo "Hello CoddyKit"
echo "Exit status: $?"
ls non_existent_file.txt
echo "Exit status: $?"Semakan Ralat Bersyarat Asas
Mengetahui status keluar membolehkan skrip anda membuat keputusan. Anda boleh menggunakan pernyataan if untuk menyemak $? dan memberikan respons terhadap ralat.
Ini menjadikan skrip anda peka terhadap masalah dan menghalangnya daripada terus berjalan dengan data yang tidak sah.
#!/bin/bash
ls non_existent_file.txt
if [ $? -ne 0 ]; then
echo "Error: The 'ls' command failed!"
exit 1 # Exit script with an error code
fi
echo "This line will not run if 'ls' fails."Kehebatan `set -e`
Menyemak $? secara manual selepas setiap perintah boleh membosankan. Di sinilah set -e amat berguna!
Apabila anda memulakan skrip dengan set -e, Bash akan keluar serta-merta jika mana-mana perintah (yang bukan sebahagian daripada ujian bersyarat) keluar dengan status bukan sifar.
Ia ialah suis keselamatan global untuk skrip anda!
`set -e` Beraksi
Mari lihat cara set -e menghalang skrip daripada terus berjalan selepas ralat. Perhatikan bahawa perintah echo terakhir tidak pernah dicapai.
#!/bin/bash
set -e
echo "Starting important tasks..."
# This command will fail
cp /non_existent_source /tmp/destination
echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."Apabila `set -e` Tidak Berhenti
set -e sangat berkuasa, tetapi mempunyai peraturan tertentu. Ia tidak akan menyebabkan skrip keluar jika perintah yang gagal itu:
- Sebahagian daripada syarat
ifatauwhile. - Sebahagian daripada senarai
&&atau||(kecuali perintah terakhir). - Didahului oleh
!.
Konteks ini direka untuk menguji kejayaan atau kegagalan, jadi `set -e` tidak mengganggunya.
Menggabungkan `set -e` dengan `||`
Kadangkala anda mahu mesej ralat tersuai sebelum keluar. Anda boleh menggabungkan set -e dengan operator || (OR).
command || { echo "Error message"; exit 1; }
Jika command gagal, bahagian selepas || akan dilaksanakan, mencetak mesej anda, kemudian keluar dengan kod ralat tertentu.
#!/bin/bash
set -e
echo "Attempting to find a file..."
find /non_existent_dir -name "*.txt" || \
{ echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }
echo "Script continued (this won't print if 'find' fails)."Mengendalikan Kod Keluar Tertentu
Walaupun 0 bermaksud berjaya dan nilai bukan sifar bermaksud gagal, kod bukan sifar tertentu boleh mempunyai maksud yang berbeza.
1: Ralat umum.2: Penyalahgunaan binaan dalaman cangkerang.127: Perintah tidak ditemui.
Anda boleh menggunakan if [ $? -eq 127 ] untuk menyemak jenis kegagalan tertentu, lalu memberikan maklum balas ralat yang lebih sesuai.
Kuiz Pengendalian Ralat
Antara pernyataan berikut, yang manakah tentang status keluar Bash dan pengendalian ralat adalah TRUE?
Rumusan: Skrip Teguh
Anda telah mempelajari cara menjadikan skrip Bash anda lebih boleh dipercayai!
- Setiap perintah mengembalikan status keluar (0 untuk berjaya, bukan sifar untuk gagal).
- Pemboleh ubah
$?memberikan status keluar perintah terakhir. set -eialah alat berkuasa yang keluar daripada skrip anda secara automatik apabila kebanyakan perintah gagal.- Gabungkan
set -edengan||untuk mesej ralat tersuai.
Menggunakan teknik ini akan membantu anda menulis skrip yang lebih profesional dan stabil.
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 “Pengendalian Ralat dan Status Keluar” percuma?
Ya — teks penuh “Pengendalian Ralat dan Status Keluar” 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 “Pengendalian Ralat dan Status Keluar”?
Laksanakan pemeriksaan ralat yang kukuh dalam skrip dengan memahami status keluar serta menggunakan 'set -e' dan logik bersyarat. 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 2 daripada 4.
Berapa lamakah pelajaran “Pengendalian Ralat dan Status Keluar” 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
- Penyahpepijatan Skrip Bash (set -x, trap)
- Pengendalian Ralat dan Status Keluar
- Amalan Terbaik Penskripan dan Linting
- Menguji Skrip Bash dengan Bats