ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ
กำหนดและใช้ฟังก์ชัน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การควบคุมงาน (bg, fg, jobs)
- การขยายคำสั่งเชลล์และการจับคู่รูปแบบ
- ชื่อแทนและพรอมต์แบบกำหนดเอง
- ฟังก์ชันเชลล์และส่วนโค้ดที่นำกลับมาใช้ซ้ำ