Penguasaan Baris Perintah Linux & Penskripan Bash · Pelajaran

Pengendalian Ralat dan Status Keluar

Laksanakan pemeriksaan ralat yang kukuh dalam skrip dengan memahami status keluar serta menggunakan 'set -e' dan logik bersyarat.

Pelajaran 2 daripada 411 langkah

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 if atau while.
  • 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 -e ialah alat berkuasa yang keluar daripada skrip anda secara automatik apabila kebanyakan perintah gagal.
  • Gabungkan set -e dengan || untuk mesej ralat tersuai.

Menggunakan teknik ini akan membantu anda menulis skrip yang lebih profesional dan stabil.

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 “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

  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