0Pricing
Linux Command Line & Bash Scripting Mastery · บทเรียน

การจัดการข้อผิดพลาดและสถานะการออก

นำการตรวจสอบข้อผิดพลาดที่รัดกุมมาใช้ในสคริปต์ โดยทำความเข้าใจสถานะการออกและใช้ 'set -e' ร่วมกับตรรกะแบบมีเงื่อนไข

การจัดการข้อผิดพลาดและสถานะการออก เป็นบทเรียน Linux Command Line & Bash Scripting Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Command Line & Bash Scripting Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับสู่การจัดการข้อผิดพลาด

ในบทเรียนนี้ เราจะทำให้สคริปต์ Bash ของคุณทำงานได้แข็งแกร่งขึ้น โดยเรียนรู้วิธีจัดการข้อผิดพลาดอย่างมีประสิทธิภาพ

ลองจินตนาการถึงสคริปต์ที่ดำเนินการหลายขั้นตอน หากขั้นตอนหนึ่งล้มเหลว คุณคงต้องการให้สคริปต์หยุดทำงาน หรืออย่างน้อยก็รับรู้ถึงความล้มเหลวนั้นใช่ไหม การจัดการข้อผิดพลาดช่วยในเรื่องนี้

สถานะการออกคืออะไร

ทุกคำสั่งที่คุณเรียกใช้ในเชลล์ Linux จะส่งคืนสถานะการออก (บางครั้งเรียกว่ารหัสการออกหรือรหัสส่งคืน)

  • สถานะ 0 หมายถึงคำสั่งทำงานเสร็จสำเร็จ
  • สถานะที่ไม่ใช่ศูนย์ (เช่น 1, 2, 127) แสดงถึงความล้มเหลวหรือข้อผิดพลาดบางรูปแบบ

สถานะนี้เปรียบเสมือนไฟจราจรสำหรับคำสั่งของคุณ!

ตรวจสอบสถานะการออกด้วยตนเอง

คุณสามารถตรวจสอบสถานะการออกของคำสั่งที่ดำเนินการล่าสุดได้โดยใช้ตัวแปรพิเศษ $?

มาลองใช้คำสั่งที่ทำงานสำเร็จและคำสั่งที่ล้มเหลวกัน:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

การตรวจสอบข้อผิดพลาดแบบมีเงื่อนไขพื้นฐาน

การทราบสถานะการออกช่วยให้สคริปต์ตัดสินใจได้ คุณสามารถใช้คำสั่ง if เพื่อตรวจสอบ $? และตอบสนองต่อข้อผิดพลาด

วิธีนี้ทำให้สคริปต์รับรู้ปัญหาและป้องกันไม่ให้ทำงานต่อโดยใช้ข้อมูลที่ไม่ถูกต้อง

#!/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."

พลังของ `set -e`

การตรวจสอบ $? ด้วยตนเองหลังทุกคำสั่งอาจยุ่งยาก นี่คือจุดที่ set -e มีประโยชน์!

เมื่อเริ่มสคริปต์ด้วย set -e Bash จะออกทันทีหากคำสั่งใด ๆ (ที่ไม่ได้เป็นส่วนหนึ่งของการทดสอบแบบมีเงื่อนไข) สิ้นสุดด้วยสถานะที่ไม่ใช่ศูนย์

นี่คือสวิตช์ความปลอดภัยระดับสากลสำหรับสคริปต์ของคุณ!

`set -e` ขณะทำงาน

มาดูกันว่า set -e ป้องกันไม่ให้สคริปต์ทำงานต่อหลังเกิดข้อผิดพลาดได้อย่างไร สังเกตว่าคำสั่ง echo สุดท้ายจะไม่ถูกเรียกใช้

#!/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."

กรณีที่ `set -e` ไม่หยุดการทำงาน

set -e มีประสิทธิภาพสูง แต่ก็มีกฎเฉพาะ โดยจะไม่ทำให้สคริปต์ออก หากคำสั่งที่ล้มเหลวเป็น:

  • ส่วนหนึ่งของเงื่อนไข if หรือ while
  • ส่วนหนึ่งของรายการ && หรือ || (ยกเว้นคำสั่งสุดท้าย)
  • มี ! อยู่ข้างหน้า

บริบทเหล่านี้ออกแบบมาเพื่อทดสอบความสำเร็จหรือความล้มเหลว ดังนั้น `set -e` จึงไม่เข้าไปแทรกแซง

รวม `set -e` กับ `||`

บางครั้งคุณอาจต้องการแสดงข้อความข้อผิดพลาดที่กำหนดเองก่อนออกจากโปรแกรม คุณสามารถรวม set -e กับตัวดำเนินการ || (OR) ได้

command || { echo "Error message"; exit 1; }

หาก command ล้มเหลว ส่วนหลัง || จะทำงาน แสดงข้อความของคุณ แล้วออกด้วยรหัสข้อผิดพลาดที่ระบุ

#!/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)."

จัดการรหัสการออกเฉพาะ

แม้ว่า 0 จะหมายถึงสำเร็จ และค่าที่ไม่ใช่ศูนย์จะหมายถึงล้มเหลว แต่รหัสที่ไม่ใช่ศูนย์แต่ละค่าก็อาจมีความหมายแตกต่างกัน

  • 1: ข้อผิดพลาดทั่วไป
  • 2: ใช้คำสั่งภายในของเชลล์ไม่ถูกต้อง
  • 127: ไม่พบคำสั่ง

คุณสามารถใช้ if [ $? -eq 127 ] เพื่อตรวจสอบประเภทความล้มเหลวที่เฉพาะเจาะจง และแสดงข้อมูลข้อผิดพลาดที่เหมาะสมยิ่งขึ้น

แบบทดสอบการจัดการข้อผิดพลาด

ข้อความใดต่อไปนี้เกี่ยวกับสถานะการออกของ Bash และการจัดการข้อผิดพลาดเป็นจริง

ทบทวน: สคริปต์ที่ทำงานได้อย่างแข็งแกร่ง

คุณได้เรียนรู้วิธีทำให้สคริปต์ Bash เชื่อถือได้มากขึ้นแล้ว!

  • ทุกคำสั่งจะส่งคืนสถานะการออก (0 เมื่อสำเร็จ และค่าที่ไม่ใช่ศูนย์เมื่อล้มเหลว)
  • ตัวแปร $? จะแสดงสถานะการออกของคำสั่งล่าสุด
  • set -e เป็นเครื่องมือที่มีประสิทธิภาพ ซึ่งจะออกจากสคริปต์โดยอัตโนมัติเมื่อคำสั่งส่วนใหญ่ล้มเหลว
  • รวม set -e กับ || เพื่อแสดงข้อความข้อผิดพลาดที่กำหนดเอง

การใช้เทคนิคเหล่านี้จะช่วยให้คุณเขียนสคริปต์ที่เป็นมืออาชีพและเสถียรมากขึ้น

คำถามที่พบบ่อย

บทเรียน “การจัดการข้อผิดพลาดและสถานะการออก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการข้อผิดพลาดและสถานะการออก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Command Line & Bash Scripting Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการข้อผิดพลาดและสถานะการออก”

นำการตรวจสอบข้อผิดพลาดที่รัดกุมมาใช้ในสคริปต์ โดยทำความเข้าใจสถานะการออกและใช้ 'set -e' ร่วมกับตรรกะแบบมีเงื่อนไข คุณปฏิบัติ Linux Command Line & Bash Scripting Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Command Line & Bash Scripting Mastery หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Command Line & Bash Scripting Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดการข้อผิดพลาดและสถานะการออก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Linux Command Line & Bash Scripting Mastery นี้ได้ไหม

ได้ บทเรียน Linux Command Line & Bash Scripting Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การดีบักสคริปต์ Bash (set -x, trap)
  2. การจัดการข้อผิดพลาดและสถานะการออก
  3. แนวทางปฏิบัติที่ดีในการเขียนสคริปต์และการตรวจไวยากรณ์
  4. การทดสอบสคริปต์ Bash ด้วย Bats
← กลับไปที่ Linux Command Line & Bash Scripting Mastery