
Bash Scripting là gì?
Bash scripting là kỹ thuật viết các tập lệnh (script) chạy trên shell Bash – trình thông dịch dòng lệnh mặc định của hầu hết hệ điều hành Linux và macOS. Một script Bash là file văn bản chứa chuỗi lệnh được thực thi tuần tự, giúp tự động hóa các tác vụ lặp lại trên máy tính.
Thay vì gõ từng lệnh bằng tay mỗi lần, bạn viết chúng một lần trong file và chạy khi cần. Từ việc sao lưu dữ liệu, xử lý log đến triển khai ứng dụng, bash scripting là kỹ năng nền tảng của mọi quản trị viên hệ thống và lập trình viên làm việc với Linux.

Cấu trúc cơ bản của một script Bash
Một script Bash bắt đầu bằng shebang – dòng đầu tiên khai báo trình thông dịch sẽ chạy script:
#!/bin/bash echo "Xin chào từ script đầu tiên"
Lưu file với đuôi .sh, sau đó phân quyền thực thi và chạy bằng lệnh chmod +x hello.sh rồi ./hello.sh, hoặc đơn giản là bash hello.sh. Shebang giúp hệ điều hành biết dùng Bash thay vì shell khác khi bạn chạy trực tiếp file.
Biến trong Bash
Bash không yêu cầu khai báo kiểu dữ liệu, gán biến trực tiếp không có khoảng trắng quanh dấu bằng: ten="Linux", sau đó truy cập bằng $ten. Luôn đặt biến trong dấu ngoặc kép khi dùng: echo "$ten" để tránh lỗi khi giá trị chứa khoảng trắng. Tham số dòng lệnh được truyền qua $1, $2… và $# đếm số tham số.
Câu điều kiện và vòng lặp
Câu lệnh điều kiện kiểm tra giá trị và rẽ nhánh luồng thực thi:
if [ $diem -gt 5 ]; then echo "Đậu" else echo "Trượt" fi
Các toán tử so sánh số gồm -eq (bằng), -ne (khác), -gt (lớn hơn), -lt (nhỏ hơn); kiểm tra file dùng -f (file tồn tại) và -d (thư mục tồn tại). Vòng lặp for duyệt danh sách và while lặp theo điều kiện:
for i in {1..5}; do
echo "Lần lặp $i"
done
dem=0
while [ $dem -lt 3 ]; do
echo "Đếm: $dem"
((dem++))
done

Hàm trong Bash
Hàm giúp đóng gói logic tái sử dụng, khai báo bằng cú pháp đơn giản:
log_message() {
local message="$1"
echo "$(date): $message"
}
log_message "Script bắt đầu chạy"
Biến local giới hạn phạm vi bên trong hàm, tránh xung đột với biến toàn cục. Hàm nhận tham số qua $1, $2 như script chính, và trả về mã thoát qua lệnh return.
Tự động hóa tác vụ với cron
Cron là bộ lập lịch của Linux, chạy script tự động theo thời gian định sẵn. Lệnh crontab -e mở bảng lịch biểu, mỗi dòng có năm trường: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Ví dụ 30 2 * * * /home/user/backup.sh chạy script sao lưu lúc 2:30 sáng mỗi ngày, */5 * * * * chạy mỗi 5 phút.
Đây là ứng dụng phổ biến nhất của bash scripting trong vận hành: sao lưu tự động, dọn log cũ, gửi báo cáo qua email, đồng bộ dữ liệu giữa máy chủ. Một script viết tốt chạy âm thầm mỗi đêm, thay thế hàng giờ làm việc thủ công.
Kỹ thuật viết script an toàn
Script càng phức tạp càng dễ sai, nên áp dụng các kỹ thuật sau từ đầu: set -euo pipefail ở đầu script khiến nó dừng ngay khi gặp lỗi, báo lỗi biến chưa khai báo và lỗi pipeline. Kiểm tra mã thoát $? sau mỗi lệnh, 0 nghĩa là thành công. Dùng trap để dọn dẹp file tạm khi script thoát, tránh để lại rác trên hệ thống.
Trong thực tế DevOps, script kiểm tra sức khỏe dịch vụ thường viết dạng vòng lặp thử lại: chạy curl kiểm tra endpoint, nếu thất bại chờ vài giây rồi thử lại tối đa 5 lần trước khi báo lỗi. Cách này giúp tự động hóa đáng tin cậy ngay cả khi hệ thống phụ thuộc chưa sẵn sàng ngay.

Ví dụ script hoàn chỉnh
Kết hợp các kiến thức trên thành script sao lưu đơn giản:
#!/bin/bash set -euo pipefail backup_dir="/home/user/backups" mkdir -p "$backup_dir" timestamp=$(date +%Y%m%d_%H%M%S) tar -czf "$backup_dir/data_$timestamp.tar.gz" /home/user/data echo "Sao lưu hoàn tất: data_$timestamp.tar.gz"
Script tạo thư mục lưu trữ nếu chưa có, đóng gói thư mục dữ liệu thành file nén kèm thời gian, rồi in thông báo. Thêm dòng 0 2 * * * /home/user/backup.sh vào crontab là bạn đã có hệ thống sao lưu tự động hoàn chỉnh.
Kết luận
Bash scripting biến những tác vụ thủ công lặp lại thành tự động hóa đáng tin cậy. Bắt đầu từ script vài dòng với biến và điều kiện, rồi dần thêm hàm, cron và kỹ thuật xử lý lỗi. Đây là kỹ năng có giá trị lâu dài cho bất kỳ ai làm việc với Linux, từ quản trị hệ thống đến phát triển phần mềm.
Tham khảo thêm: hướng dẫn bash scripting cho người mới của freeCodeCamp, bash scripting cơ bản cho DevOps engineer và tự động hóa tác vụ Linux với Bash.
