Hướng dẫn nhanh về cách tạo và gọi các hàm trong Bash.
Hàm là một khối mã có thể sử dụng lại được dùng để thực hiện một số hành động. Với các chức năng, chúng tôi nhận được mô-đun tốt hơn và mức độ tái sử dụng mã cao.
Bash cung cấp một số chức năng cài sẵn như echo
và read
, nhưng chúng tôi cũng có thể tạo các chức năng của riêng mình.
Tạo một hàm trong Bash
Có hai cách chúng ta có thể tạo các hàm trong Bash:
Một cách là chỉ sử dụng tên hàm, ví dụ:
functionName(){
// scope of function
}
Phiên bản nhỏ gọn:
functionName(){ echo "hello"; }
Một cách khác là khai báo một hàm bằng cách sử dụng hàm function
từ khóa:
function functionName {
// scope of function
}
Phiên bản nhỏ gọn:
function functionName { echo "hello"; }
Lưu ý cách chúng tôi không cần ()
khi sử dụng hàm function
từ khóa để tạo một hàm.
Những điểm quan trọng cần lưu ý về các hàm Bash:
- Mã giữa dấu ngoặc nhọn
{}
là cơ quan và phạm vi chức năng - Khi gọi một hàm, chúng tôi chỉ sử dụng tên hàm từ bất kỳ đâu trong tập lệnh bash
- Hàm phải được xác định trước khi có thể được sử dụng
- Khi sử dụng phiên bản thu gọn, lệnh cuối cùng phải có dấu chấm phẩy
;
Ví dụ:
Đoạn mã sau tạo một hàm in ra “Hello World” vào bảng điều khiển. Tên của hàm được gọi là printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Gọi một hàm trong Bash
Chúng ta gọi hàm trên như thế nào? Tất cả những gì bạn cần làm trong tập lệnh bash của mình là viết tên của hàm và nó sẽ được gọi.
Ví dụ:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
Đầu ra:
"Hello World"
Truyền đối số
Hàm trên printHello()
không có bất kỳ thông số nào. Bất cứ khi nào chúng tôi gọi nó, chúng tôi sẽ nhận được kết quả đầu ra là “Hello World”. Nhưng nếu chúng ta muốn tạo một hàm chung chung hơn thì sao? Ví dụ, chúng ta có thể gọi hàm với một số đối số và nó sẽ in ra những gì chúng ta gửi đến nó.
Có hai cách để thực hiện việc này.
Đầu tiên, chúng ta có thể sửa đổi printHello()
hàm để in các đối số được chuyển cho nó:
Ví dụ:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
Đầu ra:
Hello World
Hello DevQA
Hello I
Lưu ý cách viết câu lệnh in thứ ba printAny I love coding!
chỉ xuất ra “Xin chào, tôi”.
Điều này là do hàm của chúng tôi được thiết kế để chỉ nhận 1 tham số $1
. Từ "Tôi thích viết mã!" thực tế là 3 tham số.
Nếu chúng tôi muốn in tất cả, chúng tôi sẽ cần đặt dấu ngoặc kép xung quanh văn bản
Ví dụ:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
Đầu ra:
Hello I love coding
Một ví dụ khác, chúng ta cũng có thể chuyển bằng chữ số:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
Đầu ra:
Result is: 3
Giá trị Trả lại
Hàm bash cũng có thể trả về giá trị.
Ví dụ:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
Đầu ra:
The sum is: 3
Một cách khác để trả về giá trị từ một hàm là gán kết quả cho một biến có thể được sử dụng khi cần thiết.
Ví dụ:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
Đầu ra:
The sum is: 3