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

ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ

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

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

เหตุใดจึงต้องใช้ฟังก์ชันเชลล์

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

  • เร็วกว่าการคัดลอกและวางคำสั่ง
  • เป็นระเบียบกว่าแอลิแอสยาว ๆ
  • รับอาร์กิวเมนต์ได้ ซึ่งแอลิแอสทำไม่ได้
mkcd() {
  mkdir -p "$1" && cd "$1"
}

การกำหนดฟังก์ชัน

รูปแบบที่ง่ายที่สุดใช้ไวยากรณ์ name() { ... } คำสั่งภายในวงเล็บปีกกาจะทำงานเมื่อคุณเรียกฟังก์ชันด้วยชื่อ

greet() {
  echo "Hello from a function"
}
greet

อาร์กิวเมนต์ของฟังก์ชัน

ฟังก์ชันรับพารามิเตอร์ตามตำแหน่งเช่นเดียวกับสคริปต์: $1, $2 ส่วน $# คือจำนวนอาร์กิวเมนต์ และ $@ จะขยายเป็นอาร์กิวเมนต์ทั้งหมด

backup() {
  cp "$1" "$1.bak"
  echo "Backed up $1"
}
backup notes.txt

ค่าที่ส่งคืนและสถานะการออก

ฟังก์ชันส่งคืนสถานะการออกผ่าน return N (0-255) ใช้สำหรับตรวจสอบความสำเร็จหรือล้มเหลว ไม่ใช่สำหรับส่งคืนข้อมูล

is_root() {
  [ "$(id -u)" -eq 0 ] && return 0 || return 1
}
if is_root; then echo root; else echo normal; fi

ส่งคืนผลลัพธ์ด้วย echo

เนื่องจาก return ส่งได้เฉพาะรหัสสถานะ ผลลัพธ์จริงจึงต้องพิมพ์และจับค่าด้วย $( )

timestamp() {
  date +%Y%m%d-%H%M%S
}
name="log-$(timestamp).txt"
echo "$name"

ตัวแปรเฉพาะที่

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

count_lines() {
  local n
  n=$(wc -l < "$1")
  echo "$1 has $n lines"
}

ค่าอาร์กิวเมนต์เริ่มต้น

ใช้การขยายพารามิเตอร์ ${1:-default} เพื่อใช้ค่าเริ่มต้นเมื่อไม่มีอาร์กิวเมนต์

say() {
  local msg="${1:-Hello World}"
  echo "$msg"
}
say
say "Custom message"

ฟังก์ชันเทียบกับนามแฝง

นามแฝงจะแทนที่ข้อความอย่างง่ายและไม่สามารถรับอาร์กิวเมนต์ตามตำแหน่งได้อย่างสะดวก ฟังก์ชันสามารถแยกแขนง วนซ้ำ และประมวลผลอินพุตได้

  • ใช้นามแฝงสำหรับทางลัดแบบตายตัว
  • ใช้ฟังก์ชันเมื่อจำเป็นต้องมีตรรกะหรืออาร์กิวเมนต์
alias ll='ls -la'
lt() { ls -la "${1:-.}" | tail -n "${2:-5}"; }

ทำให้ฟังก์ชันคงอยู่

ฟังก์ชันที่กำหนดไว้ที่พรอมต์จะหายไปเมื่อเชลล์สิ้นสุดการทำงาน เพิ่มฟังก์ชันเหล่านี้ลงใน ~/.bashrc เพื่อให้พร้อมใช้งานในทุกเซสชัน

# Append to ~/.bashrc
extract() {
  case "$1" in
    *.tar.gz) tar xzf "$1" ;;
    *.zip)    unzip "$1" ;;
    *)        echo "Unknown format" ;;
  esac
}

แสดงรายการและลบฟังก์ชัน

declare -F จะแสดงรายการชื่อฟังก์ชัน ส่วน declare -f name จะแสดงเนื้อหาฟังก์ชัน ลบฟังก์ชันด้วย unset -f name

declare -F
declare -f greet
unset -f greet

ประกอบฟังก์ชันเข้าด้วยกัน

ฟังก์ชันสามารถเรียกใช้ฟังก์ชันอื่นได้ ทำให้สามารถนำส่วนประกอบขนาดเล็กที่ใช้ซ้ำได้มารวมกันเป็นเครื่องมือขนาดใหญ่ขึ้น

log() { echo "[$(date +%T)] $*"; }
deploy() {
  log "Starting deploy"
  log "Done"
}
deploy

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับฟังก์ชันของเชลล์

สรุปทบทวน

คุณได้เรียนรู้การสร้าง ฟังก์ชันของเชลล์ที่ใช้ซ้ำได้ดังนี้:

  • กำหนดด้วย name() { ... } และเรียกใช้ด้วยชื่อ
  • ใช้ $1, $@, $# สำหรับอาร์กิวเมนต์ และใช้ return สำหรับสถานะ
  • กำหนดขอบเขตตัวแปรด้วย local และส่งคืนข้อมูลผ่าน echo
  • ทำให้คงอยู่ใน ~/.bashrc และตรวจสอบด้วย declare -f

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

บทเรียน “ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ”

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

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

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

บทเรียน “ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การควบคุมงาน (bg, fg, jobs)
  2. การขยายคำสั่งเชลล์และการจับคู่รูปแบบ
  3. ชื่อแทนและพรอมต์แบบกำหนดเอง
  4. ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ
← กลับไปที่ Linux Command Line & Bash Scripting Mastery