giảm giá 50% tất cả các kế hoạch, thời gian có hạn. Bắt đầu lúc $2.48/mo
còn 11 phút
Máy chủ & Hệ điều hành

Giải thích về hàm Bash: Cú pháp, ví dụ và trường hợp sử dụng

Kelly Watson By Kelly Watson đọc 11 phút Cập nhật ngày 14 tháng 12 năm 2025
Hình minh họa 3D trừu tượng về các khối mã màu xanh phát sáng được tập hợp thành cấu trúc mô-đun, thể hiện các hàm Bash

Các hàm Bash nhóm các lệnh liên quan dưới một tên duy nhất. Khi bạn gọi tên đó, toàn bộ khối sẽ thực thi. Bạn có thể truyền đối số để tùy chỉnh hành vi và trả về giá trị để truyền đạt kết quả. Điều này giữ cho mã của bạn sạch sẽ và dễ bảo trì.

Linux thống trị môi trường máy chủ trên toàn cầu, vì vậy việc nắm vững các hàm Bash trở nên quan trọng hơn bao giờ hết. Các hàm biến các tập lệnh lộn xộn thành tự động hóa rõ ràng, có thể tái sử dụng.

Hướng dẫn này hướng dẫn bạn từ cú pháp cơ bản đến các trường hợp sử dụng nâng cao. Bạn sẽ tìm hiểu cách khai báo hàm, truyền tham số, xử lý giá trị trả về và xem 10 ví dụ thực tế mà bạn có thể sử dụng trong tập lệnh của riêng mình.

TL;DR

  • Các hàm Bash được đặt tên là các khối mã mà bạn có thể sử dụng lại trong toàn bộ tập lệnh của mình
  • Xác định hàm bằng cách sử dụng function_name() { lệnh; } cú pháp
  • Truyền đối số bằng cách sử dụng $1, $2, $3 thông số vị trí
  • Các chức năng cải thiện khả năng đọc mã, tính mô đun và bảo trì
  • Sử dụng trở lại để thoát khỏi các chức năng và truyền đạt mã trạng thái (0 = thành công, khác 0 = thất bại)
  • Các chức năng có thể được chia sẻ giữa các tập lệnh bằng cách sử dụng nguồn or xuất -f
  • Các ví dụ thực tế bao gồm sao lưu tệp, giám sát ổ đĩa, xác thực đầu vào và kiểm tra dịch vụ

Tập lệnh Bash là gì?

Hình minh họa 3D của một cuộn kỹ thuật số với dòng chữ Bash phát sáng, thể hiện sự tự động hóa của tập lệnh Bash.

Tập lệnh Bash là một phương pháp tự động hóa tác vụ bằng cách sử dụng shell Bash. Nó đóng vai trò là giao diện dòng lệnh mặc định cho Linux và vẫn là một công cụ tiêu chuẩn trên macOS. Tập lệnh Bash là một chương trình được mã hóa bằng ngôn ngữ tập lệnh Bash, có thể được thực thi trong một thiết bị đầu cuối hoặc dưới dạng tệp tập lệnh độc lập.

Với Việc sử dụng máy tính để bàn Linux ngày càng tăng và hệ điều hành thống trị môi trường máy chủ trên toàn thế giới, kỹ năng viết kịch bản Bash đã trở nên có giá trị đối với các chuyên gia CNTT. Ngôn ngữ này tích hợp tốt với các công cụ DevOps như Docker, Kubernetes và CI/CD.

Tập lệnh Bash cho phép bạn hoàn thành các tác vụ từ các lệnh đơn giản đến quản trị hệ thống và tự động hóa phức tạp. Bạn có thể tự động hóa các tác vụ lặp đi lặp lại, phát triển tập lệnh bảo trì, xây dựng quy trình triển khai, quản lý hệ thống phần mềm và thao tác dữ liệu.

Hàm Bash là gì?

Hình minh họa kỹ thuật số mang tính tương lai cho thấy dữ liệu dòng lệnh lộn xộn được sắp xếp theo một cổng xử lý phát sáng, tượng trưng cho cách hoạt động của hàm Bash, với khoảng trống ở bên trái.

Hàm Bash có thể được định nghĩa là một tập hợp các lệnh được xác định trong tập lệnh Bash hoặc được đặt tương tác tại dấu nhắc lệnh, tùy thuộc vào trường hợp sử dụng. Sau khi được xác định, hàm Bash có thể được gọi nhiều lần trong tập lệnh hoặc trong các tập lệnh khác, giống như lệnh shell thông thường.

Các hàm Bash cho phép bạn tạo các khối mã có thể tái sử dụng để thực hiện các thao tác phức tạp, sắp xếp mã và đơn giản hóa các tập lệnh của bạn. Bạn có thể truyền đối số cho hàm Bash, sau đó sử dụng chúng trong hàm để thực hiện các thao tác. Hàm Bash trả về các giá trị mà bạn có thể sử dụng ở nơi khác trong tập lệnh của mình.

e sẽ đề cập đến một số phong cách triển khai cụ thể, bao gồm chức năng đơn giản về logic cơ bản, đơn giản_inputs để xử lý đối số và các cấu trúc nâng cao như fibonnaci_recursion.

Nguyên tắc cơ bản của hàm Bash vấn đề quan trọng đối với bất kỳ quản trị viên hệ thống hoặc kỹ sư DevOps nào làm việc với tự động hóa. Các phần sau đây trình bày chi tiết từng loại này.

Tại sao nên sử dụng hàm Bash?

Bánh răng màu xanh lam phát sáng với các biểu tượng tối ưu hóa điều khiển máy mã, thể hiện hiệu quả và tốc độ đạt được khi sử dụng các hàm Bash.

Bây giờ chúng ta đã định nghĩa được hàm Bash, hãy cùng xem lại những ưu điểm chính của chúng. Phần này giúp bạn hiểu chức năng nào hữu ích nhất.

Khả năng tái sử dụng

Bạn tạo một hàm Bash và bạn có một công cụ mạnh mẽ. Bạn có thể viết một khối mã một lần và sử dụng lại nó nhiều lần trong tập lệnh của mình hoặc thậm chí trong các tập lệnh khác.

Điều này làm cho mã của bạn hiệu quả hơn và tiết kiệm thời gian bằng cách loại bỏ sự trùng lặp. Việc duy trì mã của bạn trở nên đơn giản hơn vì bạn chỉ cần thay đổi chức năng ở một nơi.

Khả năng đọc

Các tập lệnh phức tạp có thể khó giải mã. Các hàm Bash giải quyết vấn đề này bằng cách chia tập lệnh của bạn thành các phần nhỏ hơn, dễ quản lý hơn.

Mỗi chức năng phục vụ một mục đích cụ thể với một tên mô tả giải thích vai trò của nó. Điều này giúp bạn và những người khác hiểu và duy trì mã dễ dàng hơn.

Tính mô đun

Các hàm tổ chức mã của bạn. Bạn có thể chia logic thành các mô-đun nhỏ hơn để giữ cho cấu trúc tập lệnh của bạn rõ ràng và dễ quản lý.

Và nếu bạn cần thêm một tính năng mới, bạn có thể làm điều đó mà không làm ảnh hưởng đến các phần khác trong tập lệnh của mình. Khi đến lúc xóa hoặc sửa đổi chức năng, phần còn lại của tập lệnh vẫn được giữ nguyên.

Tham số hàm Bash

Bạn có thể truyền đối số hoặc tham số cho hàm của mình. Những đối số này cho phép các hàm của bạn thích ứng và thực hiện các hành động khác nhau dựa trên thông tin đầu vào mà chúng nhận được.

Điều này mở ra nhiều khả năng đồng thời làm cho các chức năng của bạn trở nên linh hoạt và dễ thích ứng hơn. Thay vì viết mã giống nhau nhiều lần, bạn viết một hàm xử lý các đầu vào khác nhau.

Sử dụng hàm Bash như thế nào và ở đâu?

Biểu đồ luồng thủy tinh 3D hiển thị việc thực thi tập lệnh phân nhánh thành một khối hàm và quay trở lại, trực quan hóa cách sử dụng các hàm Bash trong luồng logic.

Bây giờ, hãy tìm hiểu một chút về mặt kỹ thuật với định nghĩa của chúng tôi và bắt đầu với một ví dụ ngắn về cách tạo hàm Bash. Cú pháp sau có thể được sử dụng trong môi trường dựa trên Unix. Nếu bạn làm việc trên Windows, bạn có thể cài đặt Linux Bash trên Windows 10 để làm theo cùng với những ví dụ này.

Tạo hàm Bash

Bắt đầu bằng cách sử dụng cấu trúc lệnh sau:

tên_hàm () {

    # lệnh vào đây

}

 

Sau khi tạo xong hàm, bạn có thể sử dụng hàm đó trong mã của mình bất cứ lúc nào. Đây là một ví dụ hoạt động:

chào () {

    echo “Xin chào, 1 đô la!”

}

 

Gọi hàm này với chào thế giới để xuất ra “Xin chào, Thế giới!” các $1 đại diện cho đối số đầu tiên được truyền cho hàm.

Dưới đây là một vài ví dụ thực tế hơn mà bạn có thể sử dụng trong tập lệnh của riêng mình:

# Tạo bản sao lưu của bất kỳ tập tin nào

backup_file () {

    cp “$1” “$1.bak”

    echo “Đã tạo bản sao lưu: $1.bak”

}

 

# Kiểm tra xem thư mục có tồn tại không, nếu không thì tạo

đảm bảo_dir () {

    nếu như [ ! -d “$1” ]; sau đó

        mkdir -p “$1”

        echo “Thư mục đã tạo: $1”

    fi

}

 

# Ghi nhật ký tin nhắn có dấu thời gian

log_message () {

    echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] $1”

}

 

Bạn xác định các hàm Bash tùy chỉnh này một lần và gọi chúng bất cứ khi nào cần trong toàn bộ tập lệnh của bạn.

Cú pháp cơ bản của hàm

Các hàm hoạt động giống như các tập lệnh nhỏ trong tập lệnh chính của bạn nhưng chúng chia sẻ bộ nhớ của shell. Hãy ghi nhớ ba hành vi cụ thể này khi viết chúng.

Phạm vi thay đổi (Cục bộ so với Toàn cầu)

Các biến bên trong hàm theo mặc định là toàn cục. Nếu bạn xác định my_var=”kiểm tra” bên trong một hàm, nó sẽ ghi đè mọi thứ hiện có my_var trong kịch bản của bạn. Luôn sử dụng địa phương để giới hạn các biến trong hàm sẽ ngăn ngừa tác dụng phụ:

địa phương my_var=”giá trị”

Thông số vị trí

Hàm đọc các đối số sử dụng cùng một $1, $2, Và $@ các biến dưới dạng tập lệnh. Đây là các giá trị cục bộ của hàm và được đặt lại khi hàm thoát. Các đối số ban đầu của tập lệnh không thể truy cập được bên trong hàm trừ khi bạn chuyển chúng một cách rõ ràng.

Giá trị trả về

Hàm Bash không trả về dữ liệu như hàm Python hoặc JavaScript. các trở lại lệnh chỉ đặt trạng thái thoát (0-255) để biểu thị thành công hay thất bại. Để trả về dữ liệu thực tế (như chuỗi hoặc phép tính), tiếng vọng kết quả và nắm bắt nó khi gọi hàm:

kết quả=$(my_function)

10 ví dụ về hàm Bash hữu ích hàng đầu

Bây giờ bạn đã hiểu các hàm Bash và cách tạo chúng, đây là mười ví dụ thực tế mà bạn có thể thêm vào tập lệnh của mình. Mỗi hàm giải quyết một vấn đề chung và thể hiện cấu trúc, đối số và giá trị trả về phù hợp.

1. Chức năng sao lưu tập tin

Tạo bản sao lưu có dấu thời gian của bất kỳ tệp nào:

backup_file () {

    tập tin cục bộ=”$1″

    sao lưu cục bộ=”${file}.$(date +%Y%m%d_%H%M%S).bak”

    

    nếu [ -f “$file” ]; sau đó

        cp “tệp $” “$ sao lưu”

        echo “Đã tạo bản sao lưu: $backup”

        trở về 0

    khác

        echo “Lỗi: Không tìm thấy tập tin”

        trở lại 1

    fi

}

 

Cách sử dụng: backup_file /etc/nginx/nginx.conf

2. Trình kiểm tra thư mục

Kiểm tra xem thư mục có tồn tại không và tạo nó nếu cần:

đảm bảo_dir () {

    thư mục địa phương=”$1″

    

    nếu như [ ! -d “$dir” ]; sau đó

        mkdir -p “$dir”

        echo “Đã tạo: $dir”

    fi

}

 

Cách sử dụng: đảm_dir /var/log/myapp

3. Trình ghi nhật ký có dấu thời gian

Thêm dấu thời gian vào thông báo nhật ký để gỡ lỗi:

log_message () {

    cấp địa phương=”$1″

    tin nhắn địa phương=”$2″

    echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] [$level] $message”

}

 

Cách sử dụng: log_message “THÔNG TIN” “Kịch bản đã bắt đầu”

4. Giám sát dung lượng ổ đĩa

Kiểm tra mức sử dụng đĩa và cảnh báo nếu vượt quá ngưỡng:

check_disk_space () {

    ngưỡng cục bộ=”${1:-80}”

    mức sử dụng cục bộ=$(df / | tail -1 | awk ‘{print $5}’ | tr -d ‘%’)

    

    if [ “$usage” -gt “$threshold” ]; sau đó

        echo “Cảnh báo: Mức sử dụng đĩa ở mức ${usage}%”

        trở lại 1

    fi

    trở về 0

}

 

Cách sử dụng: check_disk_space 90

5. Trình xác thực đầu vào

Xác thực rằng đầu vào của người dùng không trống:

xác thực_input () {

    đầu vào cục bộ =”$1”

    tên địa phương=”$2″

    

    nếu [ -z “$input” ]; sau đó

        echo “Lỗi: $name không được để trống”

        trở lại 1

    fi

    trở về 0

}

 

Cách sử dụng: xác thực_input “$tên người dùng” “Tên người dùng”

6. Trình kiểm tra trạng thái dịch vụ

Kiểm tra xem một dịch vụ có đang chạy hay không và báo cáo trạng thái:

check_service () {

    dịch vụ địa phương=”$1″

    

    nếu systemctl đang hoạt động –quiet “$service”; sau đó

        echo “$service đang chạy”

        trở về 0

    khác

        echo “$dịch vụ không chạy”

        trở lại 1

    fi

}

 

Cách sử dụng: check_service nginx

7. Trình giải nén phần mở rộng tệp

Trích xuất phần mở rộng từ tên tệp:

get_extension () {

    tên tệp cục bộ=”$1″

    echo “${tên tệp##*.}”

}

 

Cách sử dụng: ext=$(get_extension “document.pdf”)

8. Tông đơ dây

Loại bỏ khoảng trắng ở đầu và cuối chuỗi:

cắt_chuỗi () {

    địa phương str="$1"

    str=”${str#”${str%%[![:space:]]*}”}”

    str=”${str%”${str##*[![:space:]]}”}”

    tiếng vang “$str”

}

 

Cách sử dụng: clean=$(trim_string ” xin chào thế giới “)

9. Trình lưu trữ tệp an toàn

Di chuyển tệp vào thư mục $HOME/.trash tùy chỉnh thay vì xóa vĩnh viễn tệp đó. Nó gắn dấu thời gian vào tên tệp để ngăn ghi đè các bản sao lưu trước đó.

safe_remove() {

    tập tin cục bộ=”$1″

    thùng rác cục bộ=”$HOME/.trash”

    # Nối dấu thời gian để tránh ghi đè các tệp hiện có

    local new_name=”$(tên cơ sở “$file”)_$(date +%s)”

    

    mkdir -p “$ thùng rác”

 

    nếu [ -e “$file” ]; sau đó

        mv “$file” “$trash/$new_name”

        echo “Đã chuyển vào kho lưu trữ: $file -> $trash/$new_name”

    khác

        echo “Lỗi: Không tìm thấy tập tin $”

        trở lại 1

    fi

}

 

Cách sử dụng: safe_remove old_script.sh

 

10. Trình báo cáo trạng thái

Trình diễn cơ chế trả về hàm Bash để xử lý lỗi. Giá trị trả về của hàm Bash biểu thị thành công (0) hoặc thất bại (khác 0):

quy trình_data () {

    tập tin cục bộ=”$1″

    

    nếu như [ ! -f “tệp $”]; sau đó

        trở lại 1

    fi

    

    #Xử lý tập tin

    mèo “tập tin $” | wc -l

    trở về 0

}

 

# Kiểm tra giá trị trả về

tiến trình_data “data.txt”

nếu [$? -eq 0 ]; sau đó

    echo “Xử lý hoàn tất”

khác

    echo “Xử lý không thành công”

fi

 

các $? biến ghi lại trạng thái thoát khỏi lệnh hoặc lệnh gọi hàm cuối cùng.

Chức năng Mục đích Tính năng chính
tập tin sao lưu Tạo bản sao lưu tập tin Đặt tên theo dấu thời gian
đảm bảo_dir Quản lý thư mục Tạo nếu thiếu
log_tin nhắn Ghi nhật ký Tiền tố dấu thời gian
check_disk_space Giám sát hệ thống Ngưỡng cảnh báo
xác thực_input Xác thực đầu vào Kiểm tra chuỗi rỗng
check_service Giám sát dịch vụ Tích hợp hệ thống
get_extension Phân tích chuỗi Mở rộng tham số
cắt_chuỗi Dọn dẹp chuỗi Xóa khoảng trắng
an toàn_remove Xóa an toàn Thư mục thùng rác
quy trình_dữ liệu Xử lý lỗi Giá trị trả về

Chạy chức năng Bash trên VPS

Các hàm Bash trở nên mạnh mẽ khi chạy trên môi trường máy chủ chuyên dụng. Của chúng tôi VPS Linux cung cấp cho bạn quyền truy cập root đầy đủ để tùy chỉnh môi trường shell của bạn, tạo thư viện chức năng trên toàn hệ thống và tự động hóa các tác vụ quản lý máy chủ mà không bị hạn chế.

Với VPS, bạn có thể lưu trữ các chức năng có thể sử dụng lại trong /etc/profile.d/ cho tất cả người dùng, lên lịch các tập lệnh dựa trên chức năng thông qua các tác vụ định kỳ và xây dựng quy trình tự động hóa để triển khai và bảo trì. Chúng tôi cung cấp máy chủ trên 12 địa điểm trên toàn cầu với tốc độ mạng lên tới 40 Gbps và bộ nhớ DDR5, nghĩa là thực thi tập lệnh nhanh hơn và xử lý dữ liệu mượt mà hơn.

Mức độ kiểm soát này làm cho VPS trở nên lý tưởng cho bất kỳ ai nghiêm túc về kịch bản shell và tự động hóa hệ thống.

Phần kết luận

Các hàm Bash là chìa khóa để tạo các tập lệnh mô-đun và có thể tái sử dụng. Chúng cho phép bạn nhóm các lệnh liên quan lại với nhau và gói gọn logic phức tạp để giúp mã của bạn dễ đọc và bảo trì hơn. Nếu bạn đang quản lý cơ sở hạ tầng đám mây, tự động hóa quy trình triển khai hoặc xử lý các tác vụ quản trị hệ thống thông thường, thì các chức năng sẽ giúp tập lệnh của bạn luôn ngăn nắp và hiệu quả.

Trong bài viết này, chúng tôi đã đề cập đến những kiến ​​thức cơ bản về hàm Bash, bao gồm cách xác định và gọi chúng, 10 ví dụ thực tế về hàm và các trường hợp sử dụng phổ biến để giúp bạn bắt đầu với các dự án tự động hóa của riêng mình.

Kết hợp với các cấu trúc điều khiển như Câu lệnh Bash if, các hàm cung cấp cho bạn nền tảng để tự động hóa mạnh mẽ. Bằng cách sử dụng các hàm Bash trong tập lệnh của mình, bạn có thể viết mã sạch hơn, mô-đun hơn, dễ hiểu và dễ bảo trì hơn.

Câu hỏi thường gặp

Hàm Bash có thể có biến cục bộ không?

Đúng. Hàm Bash có thể có các biến cục bộ bằng từ khóa local. Điều này hạn chế phạm vi của biến trong hàm, ngăn không cho nó ảnh hưởng đến các biến có cùng tên bên ngoài hàm.

Các hàm Bash có thể đệ quy không?

Có, các hàm Bash có thể đệ quy. Bash có kích thước ngăn xếp cuộc gọi mặc định tương đối nhỏ, do đó tùy thuộc vào các hàm đệ quy mà bạn nghĩ đến, bạn có thể cần tăng kích thước đó bằng cách sử dụng lệnh ulimit -s trước khi thực thi.

Tôi có thể sử dụng hàm Bash trong các tập lệnh khác không?

Có, bạn có thể chia sẻ các hàm Bash giữa các tập lệnh bằng lệnh nguồn (hoặc tốc ký của nó .). Bằng cách tìm nguồn tệp chứa định nghĩa hàm, bạn cung cấp các hàm đó trong tập lệnh gọi. Đối với các tiến trình con, hãy sử dụng import -f function_name để làm cho hàm có thể truy cập được.

Tôi có thể sử dụng hàm Bash trong đường ống không?

Có, nhưng nó yêu cầu các bước cụ thể cho các lệnh bên ngoài. Bên trong tập lệnh, bạn có thể chuyển dữ liệu trực tiếp đến một hàm (ví dụ: cat file | my_function). Tuy nhiên, các lệnh như xargs hoặc find -exec chạy trong môi trường mới. Để sử dụng một hàm ở đó, bạn phải xuất hàm đó (export -f my_func) và sau đó gọi Bash một cách rõ ràng (ví dụ: xargs bash -c ‘my_func “$@”‘).

Chức năng tập lệnh shell là gì?

Hàm tập lệnh shell là một khối mã được xác định trong tập lệnh shell phục vụ một mục đích cụ thể và có thể được gọi từ nhiều phần khác nhau của tập lệnh. Các hàm mang lại giá trị lớn về tính mô đun mã, khả năng sử dụng lại tốt hơn và bảo trì dễ dàng hơn. Trong ngữ cảnh của tập lệnh Bash, các hàm được gói gọn trong tập lệnh tổng thể.

Chia sẻ

Thêm từ blog

Hãy tiếp tục đọc.

Các ứng dụng tự lưu trữ tốt nhất bạn có thể chạy với ảnh bìa Cosmos Cloud với các bảng ứng dụng xung quanh bảng điều khiển Cosmos.
Máy chủ & Hệ điều hành

Các ứng dụng tự lưu trữ tốt nhất bạn có thể chạy với Cosmos Cloud: Tệp, Phương tiện, Mật khẩu, Tự động hóa, v.v.!

Có thể bạn đã thiết lập Cosmos Cloud và bây giờ muốn xem ứng dụng nào phù hợp với nó hoặc có thể bạn thậm chí chưa quyết định chọn Cosmos và chỉ muốn xem nó phù hợp với công việc của bạn như thế nào

Nick bạcNick bạc đọc 16 phút
Portainer vs Cosmos Cloud để quản lý ứng dụng Docker bao gồm sơ đồ thiết lập kết hợp và các hoạt động neon so với các khối truy cập.
Máy chủ & Hệ điều hành

Portainer vs Cosmos Cloud: Phù hợp nhất để quản lý ứng dụng Docker

Nếu bạn đã biết Docker và chỉ muốn một cách rõ ràng hơn để chạy một ngăn xếp ứng dụng đang phát triển thì đây là câu trả lời ngắn gọn cho Portainer vs Cosmos Cloud. Portainer là sự lựa chọn mạnh mẽ hơn cho Direc

Nick bạcNick bạc đọc 14 phút
Đồ họa nổi bật của Cosmos Cloud vs CasaOS vs Umbrel hiển thị ba đường dẫn tự lưu trữ bên trong một thế giới mạng đám mây trừu tượng.
Máy chủ & Hệ điều hành

Cosmos Cloud vs CasaOS vs Umbrel: Nền tảng tự lưu trữ nào phù hợp với thiết lập của bạn?

Câu trả lời ngắn gọn là CasaOS vẫn là nơi dễ bắt đầu nhất, Umbrel có cảm giác được quản lý rõ ràng nhất và Cosmos Cloud sẽ hợp lý hơn khi bạn muốn kiểm soát chặt chẽ hơn đối với doma

Nick bạcNick bạc đọc 11 phút

Sẵn sàng triển khai? Từ $2,48/tháng.

Đám mây độc lập, kể từ năm 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.