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

ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ

ลงทะเบียน trap ของ EXIT, ERR และ INT เพื่อลบไฟล์ชั่วคราวและย้อนคืนงานที่ทำไว้บางส่วนได้อย่างน่าเชื่อถือ

ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ เป็นบทเรียน 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 ออกจากการทำงาน — ไม่ว่าจะตามปกติ เนื่องจากข้อผิดพลาด หรือเพราะผู้ใช้กด Ctrl+C — สคริปต์อาจทิ้งไฟล์ชั่วคราว ข้อมูลที่เขียนไม่เสร็จ หรือสถานะที่เสียหายไว้ หากไม่มีการล้างทรัพยากร สิ่งตกค้างเหล่านี้จะสะสมและก่อให้เกิดปัญหาที่แก้ไขได้ยาก

ตัวจัดการกับดัก แก้ปัญหานี้ด้วยการลงทะเบียนฟังก์ชันหรือคำสั่งที่ Bash จะเรียกใช้โดยอัตโนมัติเมื่อได้รับสัญญาณหรือสัญญาณเสมือนที่ระบุ

  • EXIT — ทำงานทุกครั้งที่สคริปต์ออกจากการทำงานไม่ว่าจะด้วยเหตุผลใด
  • ERR — ทำงานหลังจากคำสั่งใด ๆ ส่งคืนสถานะการออกที่ไม่เป็นศูนย์
  • INT — ทำงานเมื่อผู้ใช้ส่ง SIGINT (Ctrl+C)
  • TERM — ทำงานเมื่อได้รับ SIGTERM (เช่น จาก kill)

สคริปต์ที่เขียนอย่างดีจะลงทะเบียนกับดักเหล่านี้ไว้ที่ส่วนบนสุด ก่อนเริ่มงานที่มีความเสี่ยง

ไวยากรณ์คำสั่งในตัว trap

คำสั่งในตัว trap ใช้ลงทะเบียนตัวจัดการสำหรับสัญญาณหรือสัญญาณเสมือนอย่างน้อยหนึ่งรายการ ไวยากรณ์ทั่วไปคือ:

trap 'command_or_function' SIGNAL [SIGNAL...]

กฎสำคัญ:

  • อาร์กิวเมนต์แรกคือสตริงโค้ดเชลล์ที่อยู่ในเครื่องหมายคำพูด (หรือชื่อฟังก์ชัน) ซึ่งจะทำงานเมื่อสัญญาณทำงาน
  • คุณสามารถระบุสัญญาณหลายรายการต่อจากตัวจัดการได้
  • trap '' SIGNAL เพิกเฉย ต่อสัญญาณนั้น (ตัวจัดการว่าง)
  • trap - SIGNAL คืนค่า สัญญาณให้มีพฤติกรรมเริ่มต้น

กับดักจะถูกสืบทอดโดยฟังก์ชันที่เรียกใช้ในเชลล์เดียวกัน แต่จะ ไม่ ถูกสืบทอดโดยเชลล์ย่อยที่สร้างด้วย ( ) หรือ &

#!/usr/bin/env bash
# Syntax examples — not a full script

# Register a cleanup function on EXIT
trap cleanup EXIT

# Inline handler for INT and TERM
trap 'echo "Interrupted!"; exit 1' INT TERM

# Ignore SIGHUP
trap '' HUP

# Reset SIGPIPE to default
trap - PIPE

กับดัก EXIT — ตาข่ายนิรภัยของคุณ

สัญญาณเสมือน EXIT เป็นกับดักที่สำคัญที่สุดที่ควรลงทะเบียน กับดักนี้ทำงานเมื่อเชลล์ออกจากการทำงานไม่ว่า ด้วยเหตุผลใด: ทำงานเสร็จตามปกติ, exit N, ข้อผิดพลาดที่ไม่ได้จัดการ หรือสัญญาณ จึงเหมาะอย่างยิ่งสำหรับการลบไฟล์ชั่วคราว

แนวปฏิบัติที่ดี:

  • สร้างไฟล์ชั่วคราวด้วย mktemp เพื่อให้ชื่อไม่ซ้ำและคาดเดาไม่ได้
  • เก็บเส้นทางไว้ในตัวแปรทันที
  • ลงทะเบียนกับดัก EXIT ทันทีหลังจากสร้าง เพื่อให้การล้างทรัพยากรทำงานเสมอ

รหัสการออกของสคริปต์จะคงเดิม — รหัสการออกของตัวจัดการกับดักจะถูก เพิกเฉย เว้นแต่คุณจะเรียก exit ภายในตัวจัดการอย่างชัดเจน

#!/usr/bin/env bash
set -euo pipefail

TMPFILE=$(mktemp /tmp/myapp.XXXXXX)

cleanup() {
    echo "Removing temp file: $TMPFILE" >&2
    rm -f "$TMPFILE"
}
trap cleanup EXIT

# Do real work
echo "Processing..." > "$TMPFILE"
sort "$TMPFILE" -o "$TMPFILE"
cp "$TMPFILE" /tmp/myapp_result.txt

echo "Done. Result saved."

การจัดการไฟล์และไดเรกทอรีชั่วคราวหลายรายการ

สคริปต์ที่ใช้งานจริงมักสร้างทรัพยากรชั่วคราวหลายประเภท — ไฟล์ ไดเรกทอรี FIFO และไฟล์ล็อก แทนที่จะติดตามแต่ละรายการแยกกัน ให้รวบรวมไว้ในอาร์เรย์และลบทุกอย่างด้วยฟังก์ชันล้างทรัพยากรเพียงฟังก์ชันเดียว

รูปแบบนี้ขยายได้อย่างเป็นระเบียบ ทุกครั้งที่สร้างทรัพยากรชั่วคราวใหม่ ให้เพิ่มทรัพยากรนั้นต่อท้ายอาร์เรย์ กับดัก EXIT จะจัดการรายการทั้งหมดเสมอไม่ว่าสคริปต์จะออกจากการทำงานที่จุดใด

#!/usr/bin/env bash
set -euo pipefail

CLEANUP_TARGETS=()

add_cleanup() {
    CLEANUP_TARGETS+=("$1")
}

cleanup() {
    echo "Running cleanup..." >&2
    for target in "${CLEANUP_TARGETS[@]:-}"; do
        rm -rf "$target"
        echo "Removed: $target" >&2
    done
}
trap cleanup EXIT

# Create and track temp resources
TMPDIR_WORK=$(mktemp -d /tmp/work.XXXXXX)
add_cleanup "$TMPDIR_WORK"

TMPFILE_LOG=$(mktemp /tmp/run.XXXXXX.log)
add_cleanup "$TMPFILE_LOG"

echo "Working in $TMPDIR_WORK" | tee "$TMPFILE_LOG"
touch "$TMPDIR_WORK/output.txt"
echo "Step complete."

กับดัก ERR — ตรวจจับความล้มเหลว

สัญญาณเสมือน ERR ทำงานหลังจากคำสั่งธรรมดาใด ๆ ส่งคืนสถานะการออกที่ไม่เป็นศูนย์ โดยมีเงื่อนไขว่า ตัวเลือกเชลล์ set -e (errexit) ทำงานอยู่ หรือคำสั่งนั้นไม่ได้อยู่ภายในโครงสร้างประกอบของ if, while หรือ ||/&&

ใช้กับดัก ERR เพื่อ:

  • บันทึกว่าบรรทัดใดล้มเหลวโดยใช้ $LINENO และ $BASH_COMMAND
  • เรียกใช้ตรรกะย้อนคืนสถานะก่อนที่กับดัก EXIT จะทำงาน
  • ส่งข้อความข้อผิดพลาดที่มีโครงสร้างไปยัง stderr

สำคัญ: กับดัก ERR จะ ไม่ ทำงานภายในฟังก์ชัน เว้นแต่คุณจะเรียกใช้ set -E (errtrace) อย่างชัดเจน เพื่อให้ฟังก์ชันสืบทอดกับดัก ERR จากเชลล์ที่เรียกใช้

#!/usr/bin/env bash
set -eEuo pipefail

on_error() {
    local exit_code=$?
    local line=$1
    echo "ERROR: command failed with exit code $exit_code at line $line" >&2
    echo "  Command: $BASH_COMMAND" >&2
}
trap 'on_error $LINENO' ERR

echo "Starting task..."
cp /nonexistent/file /tmp/   # This will fail
echo "This line is never reached."

กับดัก INT — จัดการ Ctrl+C อย่างเหมาะสม

การกด Ctrl+C จะส่ง SIGINT ไปยังกลุ่มกระบวนการเบื้องหน้า หากไม่มีกับดัก Bash จะออกจากการทำงานทันที และอาจทิ้งงานที่ทำค้างไว้บางส่วน

การลงทะเบียนกับดัก INT ช่วยให้คุณสามารถ:

  • แสดงข้อความยกเลิกที่เข้าใจง่ายสำหรับผู้ใช้
  • ย้อนคืนสถานะระหว่างทางก่อนส่งต่อให้กับดัก EXIT
  • ออกจากการทำงานด้วยรหัสสถานะที่มีความหมาย (130 เป็นรหัสมาตรฐานสำหรับ SIGINT: 128 + 2)

หลังจากตัวจัดการ INT ทำงานเสร็จ ให้เรียก exit 130 เพื่อส่งต่อรหัสการออกที่ถูกต้อง จากนั้นกับดัก EXIT จะทำงานโดยอัตโนมัติ

#!/usr/bin/env bash
set -euo pipefail

TMPFILE=$(mktemp /tmp/demo.XXXXXX)

cleanup() {
    rm -f "$TMPFILE"
    echo "Temp file removed." >&2
}

on_interrupt() {
    echo "" >&2
    echo "Caught SIGINT — cancelling gracefully." >&2
    exit 130   # EXIT trap (cleanup) runs automatically after this
}

trap cleanup EXIT
trap on_interrupt INT

echo "Running long task. Press Ctrl+C to cancel."
for i in $(seq 1 10); do
    echo "Step $i/10..."
    sleep 1
done
echo "All steps complete."

การรวมกับดัก EXIT, ERR และ INT

ในสคริปต์สำหรับใช้งานจริง โดยทั่วไปคุณจะลงทะเบียนกับดัก ทั้งสามรายการ ร่วมกันเพื่อครอบคลุมเส้นทางการออกจากการทำงานทุกแบบ:

  • EXIT — ทำงานเสมอ และจัดการการล้างไฟล์
  • ERR — บันทึกคำสั่งและหมายเลขบรรทัดที่ล้มเหลว
  • INT — แสดงข้อความยกเลิกและออกด้วยรหัส 130

เนื่องจาก EXIT ทำงานเป็นรายการสุดท้ายเสมอ ตรรกะการล้างทรัพยากรจึงจำเป็นต้องอยู่เพียงที่เดียว ตัวจัดการ ERR และ INT มุ่งเน้นการบันทึกข้อมูลและตั้งค่าสถานะได้ จากนั้นมอบหมายการล้างทรัพยากรจริงให้ EXIT ด้วยการเรียก exit

ใช้ set -eEuo pipefail ที่ส่วนบนสุด เพื่อให้ข้อผิดพลาดในฟังก์ชันเรียกใช้ ERR ได้เช่นกัน และเพื่อให้ pipefail ตรวจจับความล้มเหลวภายในสายคำสั่ง

#!/usr/bin/env bash
set -eEuo pipefail

TMPFILE=$(mktemp /tmp/combined.XXXXXX)
ROLLBACK_NEEDED=false

cleanup() {
    if [[ "$ROLLBACK_NEEDED" == true ]]; then
        echo "Rolling back partial changes..." >&2
    fi
    rm -f "$TMPFILE"
    echo "Cleanup done." >&2
}

on_error() {
    ROLLBACK_NEEDED=true
    echo "ERR at line $1: $BASH_COMMAND" >&2
}

on_interrupt() {
    echo "Interrupted by user." >&2
    exit 130
}

trap cleanup       EXIT
trap 'on_error $LINENO' ERR
trap on_interrupt  INT

echo "hello" > "$TMPFILE"
echo "Script finished successfully."

การคืนค่าและปิดใช้งานกับดักแบบพลวัต

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

  • trap - SIGNAL คืนค่าสัญญาณให้มีพฤติกรรมเริ่มต้นในตัว
  • trap '' SIGNAL เพิกเฉยต่อสัญญาณนั้นทั้งหมด (กระบวนการจะไม่สามารถถูกหยุดด้วยสัญญาณดังกล่าว)
  • คุณสามารถลงทะเบียนตัวจัดการใหม่ได้ทุกจุด โดยการเรียกใช้ trap ครั้งล่าสุดจะมีผล

รูปแบบที่ใช้บ่อยคือปรับกับดัก EXIT หลังจากการดำเนินการที่มีความเสี่ยงสำเร็จ โดยเปลี่ยนจากตัวจัดการย้อนคืนสถานะเป็นตัวจัดการล้างทรัพยากรแบบง่าย

#!/usr/bin/env bash
set -euo pipefail

TMPFILE=$(mktemp /tmp/staged.XXXXXX)

rollback() {
    echo "ROLLBACK: removing $TMPFILE" >&2
    rm -f "$TMPFILE"
}

cleanup_only() {
    echo "CLEANUP: removing $TMPFILE" >&2
    rm -f "$TMPFILE"
}

# Start with rollback in case something fails during the risky phase
trap rollback EXIT

echo "Performing risky operation..."
echo "critical data" > "$TMPFILE"
# ... imagine more risky steps here ...

# Risky phase succeeded — switch to simple cleanup
trap cleanup_only EXIT

echo "Risky phase done. Now doing safe finalization."
cp "$TMPFILE" /tmp/staged_result.txt
echo "All done."

การส่งต่อรหัสการออกผ่านกับดัก

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

ภายในตัวจัดการกับดัก $? จะเก็บรหัสการออกที่ เรียกใช้ กับดักนั้น ให้เก็บค่านี้ไว้ตั้งแต่บรรทัดแรกของตัวจัดการ ก่อนที่คำสั่งอื่นจะเปลี่ยนค่า

#!/usr/bin/env bash
set -euo pipefail

TMPFILE=$(mktemp /tmp/exitcode.XXXXXX)

cleanup() {
    local original_exit=$?   # capture BEFORE any other command
    echo "Cleaning up (original exit: $original_exit)" >&2
    rm -f "$TMPFILE"
    # Exit with the original code so callers see the real result
    exit "$original_exit"
}
trap cleanup EXIT

echo "Doing work..."
echo "data" > "$TMPFILE"

# Simulate failure
if [[ ! -f /tmp/required_marker ]]; then
    echo "Required marker missing!" >&2
    exit 2
fi

echo "Done."

กับดักในฟังก์ชันและเชลล์ย่อย

การทำความเข้าใจเรื่อง การสืบทอด กับดักมีความสำคัญอย่างยิ่งต่อการเขียนสคริปต์ที่ทำงานถูกต้อง:

  • ฟังก์ชัน ทำงานในเชลล์เดียวกันและสืบทอดกับดัก — แต่ ERR จะส่งต่อไปยังฟังก์ชันก็ต่อเมื่อ set -E (errtrace) ทำงานอยู่
  • เชลล์ย่อย (( ... )) เริ่มต้นด้วยสำเนากับดักของเชลล์แม่ แต่การเปลี่ยนแปลงภายในเชลล์ย่อยจะไม่ส่งผลต่อเชลล์แม่
  • งานเบื้องหลัง (cmd &) คือเชลล์ย่อย และจะ ไม่ สืบทอดกับดัก INT/TERM ของเชลล์แม่ (จะใช้การจัดการสัญญาณเริ่มต้น)

กฎเชิงปฏิบัติ: ลงทะเบียนกับดักไว้ในเนื้อหาหลักของสคริปต์ ใช้ set -E เมื่อจำเป็นต้องให้ ERR ส่งต่อไปยังฟังก์ชัน และอย่าพึ่งพาการสืบทอดกับดักข้าม &

#!/usr/bin/env bash
set -eEuo pipefail   # -E = errtrace: ERR propagates into functions

on_error() {
    echo "ERR in function or main at line $1" >&2
}
trap 'on_error $LINENO' ERR

risky_function() {
    echo "Inside risky_function"
    ls /nonexistent_path   # triggers ERR — works because of set -E
}

# Subshell: has its own copy; changes don't affect parent
(
    trap '' ERR   # disable ERR only inside subshell
    ls /nonexistent_path 2>/dev/null || true
    echo "Subshell completed without triggering parent ERR"
)

risky_function

รูปแบบการใช้งานจริง: การแทนที่ไฟล์แบบอะตอมิก

รูปแบบการเขียน Bash เชิงป้องกันที่ใช้กันมาอย่างแพร่หลายคือ การแทนที่ไฟล์แบบอะตอมิก: เขียนลงไฟล์ชั่วคราวก่อน แล้วจึงเปลี่ยนชื่อไปยังตำแหน่งปลายทาง หากมีสิ่งใดล้มเหลวก่อนการเปลี่ยนชื่อ ไฟล์ต้นฉบับจะไม่ถูกแตะต้อง กับดักช่วยทำให้รูปแบบนี้ปลอดภัยอย่างรัดกุม

ขั้นตอน:

  1. สร้างไฟล์ชั่วคราวใน ระบบไฟล์เดียวกันกับปลายทาง (เพื่อให้ mv เป็นการดำเนินการแบบอะตอมิก)
  2. ลงทะเบียนกับดัก EXIT เพื่อลบไฟล์ชั่วคราวหากต้องออกจากการทำงานก่อนเวลา
  3. เขียนและตรวจสอบเนื้อหาใหม่
  4. เปลี่ยนชื่อแบบอะตอมิก (mv) — ต้นฉบับจะถูกแทนที่ ณ จุดนี้เท่านั้น
  5. กับดัก EXIT จะลบไฟล์ชั่วคราวก็ต่อเมื่อไฟล์นั้นยังมีอยู่ (หลังจาก mv สำเร็จ ไฟล์จะหายไปแล้ว)
#!/usr/bin/env bash
set -euo pipefail

DEST="/tmp/important_config.conf"
TMPFILE=$(mktemp "$(dirname "$DEST")/.tmp.XXXXXX")

cleanup() {
    rm -f "$TMPFILE"   # no-op if mv already moved it
}
trap cleanup EXIT

# Write new content to temp file
cat > "$TMPFILE" <<'EOF'
[settings]
version=2
mode=production
EOF

# Validate before replacing
if ! grep -q 'version=' "$TMPFILE"; then
    echo "Validation failed — aborting replacement" >&2
    exit 1
fi

# Atomic rename — DEST is replaced only here
mv "$TMPFILE" "$DEST"
echo "Config updated atomically: $DEST"

ตรวจสอบความเข้าใจ: การสืบทอดกับดัก ERR

ทดสอบความเข้าใจของคุณเกี่ยวกับพฤติกรรมของกับดัก ERR เมื่อใช้ร่วมกับฟังก์ชันใน Bash

ทบทวน: ตัวจัดการกับดักสำหรับการล้างทรัพยากรและสัญญาณ

ในบทเรียนนี้ คุณได้เรียนรู้วิธีทำให้สคริปต์ Bash ทนทานต่อปัญหาด้วย ตัวจัดการกับดัก:

  • EXIT คือตาข่ายนิรภัยสำหรับทุกกรณี — ลงทะเบียนทันทีหลังจากสร้างทรัพยากรชั่วคราวใด ๆ และเก็บค่า $? ไว้ก่อนเสมอ เพื่อรักษารหัสการออกเดิม
  • ERR ช่วยให้คุณบันทึกความล้มเหลวด้วย $LINENO และ $BASH_COMMAND ใช้ set -E เพื่อให้ฟังก์ชันสืบทอดกับดักนี้
  • INT จัดการ Ctrl+C อย่างเหมาะสม — แสดงข้อความและออกด้วยรหัส 130 เพื่อให้ EXIT ล้างทรัพยากร
  • รวบรวมทรัพยากรชั่วคราวไว้ใน อาร์เรย์ และลบทั้งหมดด้วยฟังก์ชันล้างทรัพยากรเพียงฟังก์ชันเดียว
  • ใช้ trap - SIGNAL เพื่อคืนค่า และใช้ trap '' SIGNAL เพื่อเพิกเฉยต่อสัญญาณแบบพลวัต
  • รูปแบบการเปลี่ยนชื่อแบบอะตอมิก (mktemp → เขียน → ตรวจสอบ → mv) เมื่อใช้ร่วมกับกับดัก EXIT จะรับประกันว่าการเขียนไม่เสร็จจะไม่ทำให้ไฟล์ปลายทางเสียหาย

การใช้ set -eEuo pipefail ร่วมกับกับดักที่วางไว้อย่างเหมาะสม จะมอบพื้นฐานเชิงป้องกันที่มั่นคงสำหรับสคริปต์ Bash ที่ใช้งานจริงทุกชนิด

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

บทเรียน “ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ”

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

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

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

บทเรียน “ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. โหมดเข้มงวดด้วย set -euo pipefail
  2. ตัวจัดการ trap สำหรับการล้างข้อมูลและสัญญาณ
  3. ไฟล์ชั่วคราวและไดเรกทอรีล็อกที่ปลอดภัย
  4. สคริปต์แบบทำซ้ำได้อย่างปลอดภัยและตรรกะลองใหม่แบบถอยกลับ
← กลับไปที่ Linux Command Line & Bash Scripting Mastery