Bash functions 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 lệnh thực thi. Bạn có thể truyền arguments để tùy chỉnh hành vi và trả về values để truyền đạt kết quả. Điều này giữ code của bạn sạch sẽ và dễ bảo trì.
Linux chiếm ưu thế trong các môi trường server toàn cầu, vì vậy nắm vững Bash functions hiện rất quan trọng. Functions biến các script lộn xộn thành công cụ tự động hoá sạch sẽ và tái sử dụng được.
Hướng dẫn này sẽ đưa 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ẽ học cách khai báo functions, truyền parameters, xử lý return values, và xem mười ví dụ thực tế mà bạn có thể sử dụng trong các script của riêng mình.
Tóm tắt nhanh
- Bash functions là các khối code được đặt tên mà bạn có thể tái sử dụng trong toàn bộ scripts
- Định nghĩa functions bằng cách sử dụng function_name() { commands; } cú pháp
- Truyền arguments bằng cách sử dụng $1, $2, $3 tham số vị trí
- Functions cải thiện khả năng đọc code, tính mô-đun hoá, và bảo trì
- Sử dụng return để thoát khỏi functions và truyền đạt status codes (0 = thành công, non-zero = lỗi)
- Functions có thể được chia sẻ giữa các scripts bằng cách sử dụng source or export -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 input, và kiểm tra service
Bash Scripting là Gì?

Bash scripting là một phương pháp tự động hoá tác vụ bằng Bash shell. 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. Bash script là một chương trình được viết bằng ngôn ngữ Bash scripting, có thể được thực thi trong terminal hoặc dưới dạng một tệp script độc lập.
Với Mức sử dụng Linux desktop tăng dần đều và hệ điều hành này chiếm ưu thế trong các môi trường server trên toàn thế giới, kỹ năng Bash scripting đã trở nên có giá trị cho các chuyên gia IT. 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 pipelines.
Bash scripting cho phép bạn hoàn thành các tác vụ từ những lệnh đơn giản đến tự động hoá phức tạp và quản lý hệ thống. Bạn có thể tự động hoá các tác vụ lặp đi lặp lại, phát triển các script bảo trì, xây dựng deployment pipelines, quản lý các hệ thống phần mềm, và thao tác dữ liệu.
Bash Function là Gì?

Bash function có thể được định nghĩa là một tập hợp các lệnh được định nghĩa trong Bash script hoặc được đặt interactively tại command prompt, tùy thuộc vào trường hợp sử dụng. Sau khi được định nghĩa, Bash function có thể được gọi nhiều lần trong script hoặc trong các scripts khác, giống như một lệnh shell thông thường.
Bash functions cho phép bạn tạo các khối code tái sử dụng được có thể thực hiện các hoạt động phức tạp, tổ chức code của bạn, và đơn giản hoá các scripts của bạn. Bạn có thể truyền arguments đến Bash function, sau đó sử dụng chúng trong function để thực hiện các hoạt động. Bash functions trả về values mà bạn có thể sử dụng ở những nơi khác trong script của mình.
e sẽ bao gồm một số phong cách triển khai cụ thể, bao gồm simple_function để xử lý logic cơ bản, simple_inputs để xử lý tham số, và các cấu trúc nâng cao như fibonnaci_recursion.
Những kiến thức cơ bản về hàm Bash rất quan trọng đối với bất kỳ quản trị viên hệ thống hay kỹ sư DevOps nào làm việc với tự động hóa. Các phần sau đây đề cập chi tiết đến từng loại hàm này.
Tại sao nên sử dụng hàm Bash?

Giờ đã hiểu rõ định nghĩa hàm Bash, hãy xem xét những ưu điểm chính của chúng. Phần này giúp bạn hiểu rõ hơn khi nào hàm phát huy tác dụng tốt 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à tái sử dụng nó nhiều lần trong script của mình hoặc thậm chí trong các script 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ỏ việc lặp lại. Bảo trì mã của bạn trở nên đơn giản hơn vì bạn chỉ cần thay đổi hàm ở một nơi.
Khả năng đọc
Script phức tạp có thể khó hiểu. Hàm Bash giải quyết vấn đề này bằng cách chia nhỏ script của bạn thành các phần nhỏ hơn, dễ quản lý hơn.
Mỗi hàm 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à bảo trì mã dễ dàng hơn.
Tính mô-đun
Hàm sắp xếp mã của bạn theo cấu trúc. Bạn có thể tách logic thành các mô-đun nhỏ hơn, giúp cấu trúc script của bạn gọn gàng và dễ quản lý.
Và nếu bạn cần thêm tính năng mới, bạn có thể làm điều đó mà không cần chạm tới các phần khác của script. Khi cần loại bỏ hoặc sửa đổi chức năng, phần còn lại của script vẫn nguyên vẹn.
Tham số hàm Bash
Bạn có thể truyền các tham số cho hàm của mình. Những tham số này cho phép hàm của bạn thích nghi và thực hiện các hành động khác nhau dựa trên đầu vào mà chúng nhận được.
Điều này mở ra nhiều khả năng trong khi làm cho hàm của bạn linh hoạt và dễ thích nghi hơn. Thay vì viết mã tương tự nhiều lần, bạn viết một hàm xử lý các đầu vào khác nhau.
Cách sử dụng hàm Bash ở đâu và như thế nào?

Bây giờ, hãy cùng đi vào chi tiết kỹ thuật với định nghĩa của chúng ta và bắt đầu bằng một ví dụ ngắn về cách tạo hàm Bash. Cú pháp sau đây có thể được sử dụng trong các 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 để theo dõi các 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:
function_name () {
# các lệnh đi vào đây
}
Sau khi tạo hàm, bạn có thể sử dụng nó trong mã của mình bất kỳ lúc nào. Dưới đây là một ví dụ thực tế:
greet () {
echo "Xin chào, $1!"
}
Gọi hàm này bằng Xin chào Thế giới để xuất ra "Hello, World!" Cái $1 đại diện cho đối số đầu tiên được truyền vào hàm.
Dưới đây là một vài ví dụ thực tế mà bạn có thể dùng trong các script của mình:
# Tạo bản sao lưu của bất kỳ tệp 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, tạo nếu chưa có
ensure_dir () {
nếu [ ! -d "$1" ]; thì
mkdir -p "$1"
echo "Đã tạo thư mục: $1"
fi
}
# Ghi lại thông báo kèm dấu thời gian
log_message () {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
Bạn định nghĩa các hàm Bash tùy chỉnh này một lần rồi gọi chúng bất cứ khi nào cần trong script của mình.
Các Yếu Tố Cơ Bản về Cú Pháp Hàm
Hàm hoạt động như những script nhỏ bên trong script chính của bạn, nhưng chúng dùng chung 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 Biến (Cục Bộ vs. Toàn Cục)
Các biến bên trong hàm là toàn cục theo mặc định. Nếu bạn định nghĩa my_var="test" bên trong một hàm, nó sẽ ghi đè bất kỳ my_var nào hiện có trong script của bạn. Luôn dùng local để giới hạn biến trong hàm nhằm tránh tác động không mong muốn:
local my_var="value"
Tham số vị trí
Hàm đọc đối số bằng cách dùng cùng một $1, $2, và $@ biến như trong script. Những biến này chỉ tồn tại cục bộ trong hàm và sẽ bị đặt lại khi hàm thoát. Các đối số ban đầu của script không thể truy cập được bên trong hàm trừ khi bạn truyền chúng vào một cách rõ ràng.
Giá Trị Trả Về
Các hàm Bash không trả về dữ liệu như Python hay JavaScript. Lệnh return chỉ đặt mã thoát (0-255) để chỉ thị thành công hay thất bại. Để trả về dữ liệu thực tế (như chuỗi hay kết quả tính toán), echo kết quả và bắt nó khi gọi hàm:
result=$(my_function)
10 Ví Dụ Hàm Bash Hữu Ích Nhất
Bây giờ bạn đã hiểu hàm Bash và cách tạo chúng, dưới đây là mười ví dụ thực tế mà bạn có thể thêm vào script của mình. Mỗi hàm giải quyết một vấn đề phổ biến và minh họa cấu trúc, đối số, và giá trị trả về đúng cách.
1. Hàm Sao Lưu Tệp
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 cục bộ="$1"
local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"
nếu [ -f "$file" ]; thì
cp "$file" "$backup"
echo "Backup created: $backup"
return 0
else
echo "Error: File not found"
return 1
fi
}
Cách sử dụng: backup_file /etc/nginx/nginx.conf
2. Công cụ Kiểm tra Thư mục
Kiểm tra xem thư mục có tồn tại và tạo nó nếu cần:
ensure_dir () {
địa phương dir="$1"
nếu [ ! -d "$dir" ]; thì
mkdir -p "$dir"
echo "Created: $dir"
fi
}
Cách sử dụng: ensure_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 các tin nhắn nhật ký để gỡ lỗi:
log_message () {
cấp độ địa phương="$1"
local message="$2"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}
Cách sử dụng: log_message "INFO" "Script started"
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}"
local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$usage" -gt "$threshold" ]; then
echo "Warning: Disk usage at ${usage}%"
return 1
fi
return 0
}
Cách sử dụng: check_disk_space 90
5. Trình Xác Thực Đầu Vào
Xác minh rằng dữ liệu nhập từ người dùng không trống:
validate_input () {
đầu vào cục bộ="$1"
tên địa phương="$2"
nếu [ -z "$input" ]; thì
echo "Error: $name cannot be empty"
return 1
fi
return 0
}
Cách sử dụng: validate_input "$username" "Tên người dùng"
6. Trình kiểm tra trạng thái dịch vụ
Kiểm tra xem dịch vụ có đang chạy và báo cáo trạng thái:
check_service () {
dịch vụ địa phương="$1"
if systemctl is-active –quiet "$service"; then
echo "$service is running"
return 0
else
echo "$service is not running"
return 1
fi
}
Cách sử dụng: check_service nginx
7. Công cụ trích xuất 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 "${filename##*.}"
}
Cách sử dụng: ext=$(get_extension "document.pdf")
8. Công cụ cắt cỏ dây
Loại bỏ khoảng trắng ở đầu và cuối chuỗi:
trim_string () {
local str="$1"
str="${str#"${str%%[![:space:]]*}"}"
str="${str%"${str##*[![:space:]]}"}"
echo "$str"
}
Cách sử dụng: clean=$(trim_string " hello world ")
9. Công cụ Lưu trữ File An toàn
Di chuyển file đến thư mục $HOME/.trash tùy chỉnh thay vì xóa vĩnh viễn. Nó thêm timestamp vào tên file để tránh ghi đè các bản sao lưu trước đó.
safe_remove() {
tệp cục bộ="$1"
local trash="$HOME/.trash"
# Thêm timestamp để tránh ghi đè file hiện có
local new_name="$(basename "$file")_$(date +%s)"
mkdir -p "$trash"
if [ -e "$file" ]; then
mv "$file" "$trash/$new_name"
echo "Đã di chuyển đến lưu trữ: $file -> $trash/$new_name"
else
echo "Lỗi: không tìm thấy $file"
return 1
fi
}
Cách sử dụng: safe_remove old_script.sh
10. Người báo cáo trạng thái
Minh họa cơ chế trả về giá trị của hàm Bash để xử lý lỗi. Giá trị trả về của hàm Bash cho biết thành công (0) hoặc thất bại (khác 0):
process_data () {
tệp cục bộ="$1"
nếu [ ! -f "$file" ]; thì
return 1
fi
# Xử lý file
cat "$file" | wc -l
return 0
}
# Kiểm tra giá trị trả về
process_data "data.txt"
if [ $? -eq 0 ]; then
echo "Xử lý hoàn tất"
else
echo "Xử lý thất bại"
fi
Cái $? variable ghi lại trạng thái thoát từ lệnh hoặc hàm được gọi gần nhất.
| Hàm | Mục đích | Tính năng chính |
| backup_file | Tạo bản sao lưu file | Đặt tên có dấu thời gian |
| ensure_dir | Quản lý thư mục | Tạo nếu không có |
| log_message | Đăng nhập | Tiền tố dấu thời gian |
| check_disk_space | Giám sát hệ thống | Cảnh báo ngưỡng |
| validate_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 Systemd |
| get_extension | Phân tích chuỗi | Mở rộng tham số |
| trim_string | Dọn dẹp chuỗi | Loại bỏ khoảng trắng |
| safe_remove | Xóa an toàn | Thư mục Rác |
| process_data | Xử lý lỗi | Giá trị trả về |
Chạy Hàm Bash trên VPS
Hàm Bash phát huy sức mạnh khi chạy trong môi trường máy chủ chuyên dụng. Linux VPS cấp cho bạn quyền truy cập root đầy đủ để tùy chỉnh môi trường shell, tạo thư viện hàm toàn hệ thống và tự động hóa các tác vụ quản lý máy chủ mà không có giới hạn.
Với VPS, bạn có thể lưu trữ các hàm tái sử dụng trong /etc/profile.d/ cho tất cả người dùng, lên lịch các script dựa trên hàm thông qua cron jobs và xây dựng các pipeline tự động hóa cho triển khai và bảo trì. Chúng tôi cung cấp máy chủ trên 12 vị trí 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 script 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 lý tưởng cho bất kỳ ai nghiêm túc với shell scripting và tự động hóa hệ thống.
Kết luận
Các hàm Bash là yếu tố then chốt để tạo ra những script mô-đun và tái sử dụng được. Chúng cho phép bạn nhóm các lệnh liên quan và đóng gói logic phức tạp, giúp code dễ đọc và dễ 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 hay xử lý các tác vụ quản trị hệ thống thường xuyên, hàm sẽ giúp script của bạn luôn có tổ chức và hoạt động 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 định nghĩa và gọi hàm, mười ví dụ hàm thực tế, và những trường hợp sử dụng phổ biến để bạn bắt đầu với các dự án tự động hóa riêng.
Kết hợp với các cấu trúc điều khiển như Lệnh if trong Bash, hàm cung cấp cho bạn những khối xây dựng cần thiết cho tự động hóa mạnh mẽ. Bằng cách sử dụng hàm Bash trong script, bạn có thể viết code sạch hơn, mô-đun hơn và dễ hiểu cũng như dễ bảo trì hơn.