0Pricing
DevOps Bootcamp · บทเรียน

ฟังก์ชันในสคริปต์ Bash

จัดระเบียบโค้ดด้วยฟังก์ชัน ส่งเสริมการนำกลับมาใช้ซ้ำ และทำให้สคริปต์สะอาดตาและดูแลรักษาได้ง่ายขึ้น

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

ฟังก์ชัน Bash คืออะไร

ในการเขียนสคริปต์ Bash ฟังก์ชันคือชุดโค้ดที่ทำงานเฉพาะอย่าง ลองนึกภาพว่าเป็นสคริปต์ขนาดเล็กภายในสคริปต์หลักของคุณ

ฟังก์ชันช่วยให้คุณ:

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

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

ใน Bash มีวิธีกำหนดฟังก์ชันที่ใช้กันทั่วไปสองวิธี ทั้งสองวิธีให้ผลลัพธ์เหมือนกัน โดยไวยากรณ์แบบแรกเป็นวิธีที่ใช้กันมากที่สุด

ลองเรียกใช้ตัวอย่างนี้ ตัวอย่างจะกำหนดฟังก์ชันไว้ แต่ยังไม่ได้เรียกใช้!

#!/bin/bash

# Method 1: The most common way
my_first_func () {
  echo "Hello from my_first_func!"
}

# Method 2: Using the 'function' keyword
function my_second_func {
  echo "Hello from my_second_func!"
}

echo "Functions defined, but not called."

การเรียกใช้ฟังก์ชันของคุณ

การกำหนดฟังก์ชันไม่ได้ทำให้ฟังก์ชันทำงานทันที หากต้องการเรียกใช้โค้ดภายในฟังก์ชัน เพียงเรียกฟังก์ชันด้วยชื่อของฟังก์ชันนั้น เช่นเดียวกับคำสั่งอื่น ๆ

ดูวิธีที่เราเรียกใช้ my_function หลังจากกำหนดฟังก์ชันแล้ว:

#!/bin/bash

my_function () {
  echo "This message is from inside the function."
}

echo "Script started."
my_function # Call the function here
echo "Script finished."

ตัวแปรภายในฟังก์ชัน

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

เพื่อป้องกันผลข้างเคียงที่ไม่ตั้งใจและแยกฟังก์ชันออกจากกัน ให้ใช้คำสำคัญ local เพื่อประกาศตัวแปรเป็นตัวแปรภายใน ตัวแปรภายในจะมีอยู่เฉพาะภายในฟังก์ชันนั้น

#!/bin/bash

global_message="I'm a global message"

my_function () {
  local func_message="I'm a local message"
  global_message="I've been changed by the function!"
  echo "Inside func: $func_message"
  echo "Inside func: $global_message"
}

echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"

การส่งอาร์กิวเมนต์ให้ฟังก์ชัน

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

  • $1, $2, $3...: อาร์กิวเมนต์แต่ละรายการ
  • $#: จำนวนอาร์กิวเมนต์ทั้งหมด
  • $@: อาร์กิวเมนต์ทั้งหมดในรูปสตริงแยกกัน
#!/bin/bash

greet_user () {
  echo "Hello, $1!"
  echo "You are $2 years old."
  echo "Total arguments received: $#"
  echo "All arguments: $@"
}

echo "Calling greet_user with two arguments:"
greet_user "Alice" 30

echo "\nCalling greet_user with one argument:"
greet_user "Bob"

สถานะการออกจากฟังก์ชัน (การคืนค่า)

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

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

#!/bin/bash

check_age () {
  local age=$1
  if [ "$age" -ge 18 ]; then
    return 0 # Success: 18 or older
  else
    return 1 # Failure: under 18
  fi
}

check_age 25
echo "Exit status for 25: $?"

check_age 16
echo "Exit status for 16: $?"

if check_age 20; then
  echo "User is an adult."
else
  echo "User is a minor."
fi

การรับผลลัพธ์จากฟังก์ชัน

แม้ return จะส่งสถานะการออกจากการทำงาน แต่หากต้องการให้ฟังก์ชันสร้าง 'ค่า' ที่เก็บไว้ในตัวแปรได้ ฟังก์ชันควรใช้ echo เพื่อส่งค่านั้นไปยังผลลัพธ์มาตรฐาน

จากนั้นคุณสามารถรับผลลัพธ์นี้ได้โดยใช้การแทนที่คำสั่ง ซึ่งครอบการเรียกใช้ฟังก์ชันด้วย $(...)

#!/bin/bash

get_full_name () {
  local first_name=$1
  local last_name=$2
  echo "$first_name $last_name" # Echo the full name
}

name="$(get_full_name "John" "Doe")"

echo "Full name captured: $name"

calculate_area () {
  local length=$1
  local width=$2
  echo $((length * width))
}

area=$(calculate_area 10 5)
echo "Calculated area: $area"

ตัวอย่างเชิงปฏิบัติ: ตัวบันทึกการทำงาน

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

#!/bin/bash

log_message () {
  local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  local message="$1"
  echo "[$timestamp] $message"
}

log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."

แนวทางปฏิบัติที่ดีในการใช้ฟังก์ชัน

หากต้องการเขียนสคริปต์ที่ชัดเจนและดูแลรักษาได้ง่ายด้วยฟังก์ชัน โปรดพิจารณาเคล็ดลับต่อไปนี้:

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

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

ทดสอบความเข้าใจของคุณเกี่ยวกับการส่งและการเข้าถึงอาร์กิวเมนต์ภายในฟังก์ชัน Bash

ฟังก์ชัน: ทบทวนและขั้นตอนถัดไป

ทำได้ดีมาก! คุณเข้าใจฟังก์ชัน Bash แล้ว

เราได้เรียนรู้เกี่ยวกับ:

  • การกำหนดและเรียกใช้ฟังก์ชัน
  • การใช้ local สำหรับขอบเขตของตัวแปร
  • การส่งอาร์กิวเมนต์ด้วย $1, $#, $@
  • การกำหนดสถานะการออกจากการทำงานด้วย return
  • การรับผลลัพธ์ด้วย echo และการแทนที่คำสั่ง

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

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

บทเรียน “ฟังก์ชันในสคริปต์ Bash” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันในสคริปต์ Bash”

จัดระเบียบโค้ดด้วยฟังก์ชัน ส่งเสริมการนำกลับมาใช้ซ้ำ และทำให้สคริปต์สะอาดตาและดูแลรักษาได้ง่ายขึ้น คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

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

บทเรียน “ฟังก์ชันในสคริปต์ Bash” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

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

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

  1. โครงสร้างการวนซ้ำ (for, while)
  2. ฟังก์ชันในสคริปต์ Bash
  3. อาร์กิวเมนต์และตัวเลือกของสคริปต์ ($@, $#, getopts)
  4. คำสั่ง case และการจับคู่รูปแบบ
← กลับไปที่ DevOps Bootcamp