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

Cách sử dụng các hàm trong Bash / Shell Scripts, với các ví dụ

Bài viết này sẽ giải thích cách sử dụng hàm trong tập lệnh Bash - giúp bạn sử dụng lại mã và đơn giản hóa các tập lệnh của mình.

Tại sao phải viết mã nhiều lần trong khi bạn có thể viết một lần và sử dụng lại?

Đó là những gì chức năng để bạn làm.

Bài viết này phác thảo việc sử dụng các hàm trong tập lệnh Bash / Shell.

Hàm là gì?

Một chức năng là một đoạn mã có thể sử dụng lại. Các hàm có thể chấp nhận các tham số, cho phép chúng thực hiện các hành động lặp lại giống nhau trên các đầu vào khác nhau.

Các hàm thường thực hiện bất kỳ hành động nào, xuất ra hoặc in kết quả hoặc trả về một giá trị để sử dụng trong tương lai.

Tại sao lại sử dụng một hàm?

Ví dụ:bạn có thể có một tập lệnh gửi thông báo qua email rằng đã xảy ra sự cố. Nếu bạn muốn gửi nhiều email khác nhau cho nhiều người nhận, bạn có thể viết cùng một mã gửi email nhiều lần trong tập lệnh để gửi thư.

Khi sử dụng một hàm, bạn chỉ có thể viết mã này một lần, sau đó gọi mã này với những người nhận, chủ thể và tin nhắn khác nhau, bằng một lệnh gọi hàm một dòng thay vì mã trùng lặp.

Cú pháp hàm Bash

Cú pháp để viết các hàm trong tập lệnh Bash / Shell như sau:

name_of_function () {
    # COMMANDS
    # Optional return value
}

Lưu ý rằng:

  • tên_mục_chức là tên bạn muốn có thể gọi hàm của mình bằng cách sử dụng
    • Chỉ các ký tự chữ và số và dấu gạch dưới!
  • Tên hàm phải được theo sau bởi () (dấu ngoặc chuẩn)
    • Lưu ý các khoảng trắng xung quanh dấu ngoặc vuông! Chúng là bắt buộc!
  • Mã bạn muốn hàm thực thi phải được bao bọc trong {} (dấu ngoặc nhọn)
    • Bất kỳ mã nào nằm ngoài các dấu ngoặc nhọn này KHÔNG phải là một phần của hàm và sẽ không được thực thi.
  • LỆNH có thể là bất kỳ lệnh nào thường có sẵn trên hệ thống Linux của bạn
  • Bạn có thể tùy chọn quay lại một giá trị - xem ví dụ dưới đây để biết cách sử dụng
    • Để kết thúc sớm một chức năng, bạn cũng có thể gọi return không có giá trị nào để thoát khỏi chức năng
    • $? đặc biệt biến sẽ giữ giá trị trả về từ lệnh được thực thi cuối cùng, làm cho nó có sẵn ở nơi khác trong tập lệnh của bạn sau khi chạy hàm

Ví dụ &Giải thích

Dưới đây là một ví dụ minh họa tất cả các phần tử hàm Bash khác nhau - với các nhận xét giải thích mọi thứ đang hoạt động.

#!/bin/bash

# Define a global variable - available anywhere in the script as it is not defined inside a function or loop
initial_value=3

# Define a function which does some mathematics
my_math_function () {

    # Get the parameters passed to the function 
    # Parameters are passed after the function name when calling the function, and will be named in order of appearance, starting with $1, then $2, etc
    # Below, these parameter values are assigned to local variables - available only inside the function - so that it's easier to tell what they are
    local multiplier_value=$1
    local addition_value=$2

    # Calculate the result and assign it to a local variable
    # Notice the $(( )) wrapping the calculations - this tells the script to assign the result of these calculations to the results variable, rather than assigning the calculations as a text value
    local result=$(( $initial_value * $multiplier_value + $addition_value ))

    # Print the result to the console
    # Depending on how the function is used, text output from the function can be used to read results from it
    echo $result

    # It is also possible to get output from the function using a return value
    return $result

}

# Call the function with different input parameters
# Parameters are passed to the function by typing them after the function separated by a space
# The function above expects two parameters - a multiplier_value and addition_value

my_math_function 2 4 # Will output 10 (2 * 3 + 4)

my_math_function 3 5 # Will output 14 (3 * 3 + 5)

# The $? is a special variable in Bash scripts which always holds the return value from the last executed command
# It can be used to get the value specified as the return value from the function.

echo $? # Will output 14

# Assign the result of the function to a variable
# This will assign any text outputted by the function (for example using the echo command) to a variable
my_result=$(my_math_function 6 7)
echo $my_result # Will output 25 (6 * 3 + 7)

Dấu ‘#!’ Trong Tập lệnh Shell của Linux là gì?

Bạn muốn chuyển các giá trị cho tập lệnh shell của bạn (để sau đó bạn có thể chuyển chúng cho các hàm trong đó)? Hãy xem bài viết này.