คู่มือฉบับย่อเกี่ยวกับวิธีการสร้างและเรียกใช้ฟังก์ชันใน Bash
ฟังก์ชันคือบล็อกของโค้ดที่ใช้ซ้ำได้ซึ่งใช้เพื่อดำเนินการบางอย่าง ด้วยฟังก์ชันต่างๆ เราจะได้โมดูลาร์ที่ดีขึ้นและมีการใช้โค้ดซ้ำในระดับสูง
Bash มีฟังก์ชันในตัวเช่น echo
และ read
แต่เราสามารถสร้างฟังก์ชันของเราเองได้
การสร้างฟังก์ชันใน Bash
มีสองวิธีที่เราสามารถสร้างฟังก์ชันใน Bash:
วิธีหนึ่งคือเพียงแค่ใช้ชื่อฟังก์ชัน เช่น:
functionName(){
// scope of function
}
รุ่นกะทัดรัด:
functionName(){ echo "hello"; }
อีกวิธีหนึ่งคือการประกาศฟังก์ชันโดยใช้ function
คีย์เวิร์ด:
function functionName {
// scope of function
}
รุ่นกะทัดรัด:
function functionName { echo "hello"; }
สังเกตว่าเราไม่ต้องการ ()
เมื่อใช้ function
คีย์เวิร์ดเพื่อสร้างฟังก์ชัน
จุดสำคัญที่ควรทราบเกี่ยวกับฟังก์ชัน Bash:
- รหัสระหว่างวงเล็บปีกกา
{}
เป็นเนื้อความและขอบเขตของฟังก์ชัน - เมื่อเรียกใช้ฟังก์ชัน เราเพียงแค่ใช้ชื่อฟังก์ชันจากที่ใดก็ได้ในสคริปต์ทุบตี
- ต้องกำหนดฟังก์ชันก่อนจึงจะสามารถใช้งานได้
- เมื่อใช้เวอร์ชันคอมแพค คำสั่งสุดท้ายต้องมีเครื่องหมายอัฒภาค
;
ตัวอย่าง:
รหัสต่อไปนี้สร้างฟังก์ชันที่พิมพ์ "Hello World" ไปยังคอนโซล ชื่อของฟังก์ชันเรียกว่า printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
การเรียกใช้ฟังก์ชันใน Bash
เราจะเรียกฟังก์ชันข้างต้นได้อย่างไร? สิ่งที่คุณต้องทำใน bash script ของคุณคือเขียนชื่อของฟังก์ชันและมันจะถูกเรียก
ตัวอย่างเช่น:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
เอาท์พุต:
"Hello World"
ส่งผ่านอาร์กิวเมนต์
ฟังก์ชันข้างต้น printHello()
ไม่มีพารามิเตอร์ใด ๆ ทุกครั้งที่เราเรียกมัน เราจะได้รับผลลัพธ์ “Hello World” แต่ถ้าเราต้องการสร้างฟังก์ชันทั่วไปมากกว่านี้ล่ะ ตัวอย่างเช่น เราสามารถเรียกใช้ฟังก์ชันด้วยอาร์กิวเมนต์ และฟังก์ชันจะพิมพ์สิ่งที่เราส่งไป
มีสองวิธีในการทำเช่นนี้
ก่อนอื่นเราสามารถแก้ไข printHello()
ฟังก์ชั่นการพิมพ์อาร์กิวเมนต์ที่ส่งผ่านไปยัง:
ตัวอย่างเช่น:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
เอาท์พุต:
Hello World
Hello DevQA
Hello I
สังเกตว่าคำสั่งการพิมพ์ครั้งที่สาม printAny I love coding!
มีเพียงเอาต์พุต “สวัสดี ฉัน”
เนื่องจากฟังก์ชันของเราได้รับการออกแบบมาให้รับพารามิเตอร์ $1
. เพียง 1 พารามิเตอร์เท่านั้น . คำว่า “ฉันชอบเขียนโค้ด!” จริงๆ แล้วเป็น 3 พารามิเตอร์
หากเราต้องการพิมพ์ทั้งหมด เราจะต้องใส่เครื่องหมายคำพูดรอบข้อความ
ตัวอย่างเช่น:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
เอาท์พุต:
Hello I love coding
อีกตัวอย่างหนึ่ง เราสามารถส่งต่อเป็นตัวเลขได้เช่นกัน:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
เอาท์พุต:
Result is: 3
การคืนค่า
ฟังก์ชัน Bash สามารถคืนค่าได้
ตัวอย่างเช่น:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
เอาท์พุต:
The sum is: 3
อีกวิธีในการคืนค่าจากฟังก์ชันคือการกำหนดผลลัพธ์ให้กับตัวแปรที่สามารถใช้ได้เมื่อจำเป็น
ตัวอย่างเช่น:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
เอาท์พุต:
The sum is: 3