Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách tạo và gọi hàm trong Bash

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ư echoread , 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