Hàm trong Shell Script – Cách viết và gọi hàm

Trong bài viết này, chúng ta sẽ thảo luận chi tiết về các hàm trong shell. Hàm cho phép bạn phân chia chức năng tổng thể của một script thành các phần nhỏ, có logic riêng biệt, sau đó có thể được gọi để thực hiện các nhiệm vụ cụ thể của chúng khi cần.

Các hàm shell tương tự như các chương trình con, thủ tục và hàm trong các ngôn ngữ lập trình khác.

Xem thêm:

Định nghĩa một hàm trong ShellScript

tên_hàm() {
    # Các câu lệnh bên trong hàm
    # ...
}

Ví dụ: 

#!/bin/bash

# Định nghĩa hàm hello
hello() {
    echo "Hello World"
}

# Gọi hàm hello
hello

Truyền tham số cho hàm

Ví dụ: Tính tổng 2 số

  • Hàm tinh_tong nhận hai tham số (số thứ nhất và số thứ hai) từ lời gọi hàm.
  • Sử dụng biến tong để tính tổng của hai số.
  • Cuối cùng, in ra kết quả tổng.
#!/bin/bash

# Định nghĩa hàm tính tổng
tinh_tong() {
    # Nhận tham số từ lời gọi hàm và lưu vào biến
    so1=$1
    so2=$2

    # Tính tổng
    tong=$((so1 + so2))

    # In ra kết quả
    echo "Tổng của $so1 và $so2 là: $tong"
}

# Gọi hàm và truyền tham số
tinh_tong 5 3

Liên quan:

Trả về giá trị từ hàm

Cú pháp:

ten_ham() {
    # Các câu lệnh bên trong hàm
    # ...

    # Trả về giá trị
    return gia_tri
}

Ví dụ:

  • Hàm tinh_tong tính tổng của hai số và sử dụng return để trả về giá trị tổng.
  • Biến bien_tong lưu giá trị trả về từ hàm bằng cách sử dụng $?.
  • Sau đó, giá trị tổng được in ra màn hình.
#!/bin/bash

# Hàm tính tổng của hai số và trả về giá trị
tinh_tong() {
    local so1=$1
    local so2=$2
    local tong=$((so1 + so2))

    # Trả về giá trị tổng
    return $tong
}

# Gọi hàm và lưu giá trị trả về vào bien_tong
tinh_tong 5 3
bien_tong=$?

# In ra giá trị tổng
echo "Tổng của 5 và 3 là: $bien_tong"

Hàm lồng nhau

Ví dụ cách sử dụng hàm lồng nhau trong shell script để tính giai thừa của một số và in thông tin về nó:

#!/bin/bash

# Hàm tính giai thừa của một số
tinh_giai_thua() {
    local n=$1
    local giai_thua=1

    # Sử dụng vòng lặp để tính giai thừa
    for ((i=1; i<=n; i++))
    do
        giai_thua=$((giai_thua * i))
    done

    # Trả về giá trị giai thừa
    echo $giai_thua
}

# Hàm in thông tin về số và giai thừa của nó
in_thong_tin_giai_thua() {
    local so=$1

    # Gọi hàm tinh_giai_thua để lấy giá trị giai thừa
    local ket_qua_giai_thua=$(tinh_giai_thua $so)

    # In ra thông tin
    echo "Số: $so"
    echo "Giai thừa: $ket_qua_giai_thua"
}

# Gọi hàm in_thong_tin_giai_thua với số 5
in_thong_tin_giai_thua 5

Trên đây là cách viết và gọi chương trình con trong bash shell. Cảm ơn bạn đã tham khảo quản trị linux trên ttnguyen.net.

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em