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ì?

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à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â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?

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.