Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

วิธีสร้างและเรียกใช้ฟังก์ชันใน Bash

คู่มือฉบับย่อเกี่ยวกับวิธีการสร้างและเรียกใช้ฟังก์ชันใน 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