Khái Niệm Script Shell
Script shell là tập hợp các lệnh được ghi dưới dạng văn bản có thể thực thi trực tiếp. Đây là ngôn ngữ thông dịch, hoạt động dựa trên cấu trúc logic và xử lý dữ liệu. Script shell đóng vai trò nền tảng trong quản lý hệ thống Linux/UNIX và tự động hóa công việc vận hành.
Ứng Dụng Thực Tế
Script shell là công cụ không thể thiếu cho kỹ sư vận hành Linux, giúp thực hiện:
- Tự động hóa quy trình quản trị hệ thống
- Xử lý tác vụ lặp lại (backup, kiểm tra hệ thống)
- Phối hợp với các ứng dụng cốt lõi của hệ điều hành
Thành Phần Cơ Bản
1. Cấu Trúc Script
- Dòng shebang: Chỉ định trình thông dịch (ví dụ:
#!/bin/bash) - Phần thân script: Tập hợp lệnh, điều khiển logic và xử lý dữ liệu
- Chú thích: Văn bản giải thích không ảnh hưởng đến quá trình chạy
2. Cách Viết Chú Thích
Chú thích một dòng:
#!/bin/bash
# Khởi động dịch vụ web
systemctl start nginx
Chú thích đa dòng (sử dụng # cho từng dòng):
#!/bin/bash
# Script triển khai ứng dụng
# Tạo thư mục dự án
# Cài đặt phụ thuộc
# Khởi động dịch vụ
Quy Tắc Viết Script
1. Tiêu Chuẩn Cơ Bản
- Tên file rõ nghĩa:
backup_db_daily.sh - Đầu file phải có shebang:
#!/bin/bash - Tránh dùng tiếng Việt trong chú thích
- Ưu tiên lệnh nội bộ:
echo,export,read - Giữ cấu trúc rõ ràng với thụt lề 2 ký tự
Ví dụ về cách viết tối ưu:
#!/bin/bash
for user in $(cat /etc/passwd | cut -d: -f1); do
echo "Processing user: $user"
done
2. Cấu Hình Vim Tự Động
Thêm vào ~/.vimrc:
autocmd BufNewFile *.sh set filetype=sh
map <F2> :call GenerateHeader()<CR>
function! GenerateHeader()
call append(0, "############################################")
call append(1, "# Author: dev_team")
call append(2, "# Date: ".strftime("%Y-%m-%d"))
call append(3, "# Version: 1.0")
call append(4, "# Description: System deployment script")
call append(5, "############################################")
call append(6, "#!/bin/bash")
endfunction
Thực Thi Script
Có hai phương pháp chính:
./script.sh: Chạy trực tiếp trong môi trường hiện tạibash script.sh: Chạy trong môi trường chỉ định
Gỡ Lỗi Với Tùy Chọn -x
Hiển thị từng bước thực thi để dễ xác định lỗi:
#!/bin/bash
echo "Starting deployment"
date
ls /invalid_path
pwd
Kết quả khi chạy với bash -x script.sh:
+ echo Starting deployment
Starting deployment
+ date
Thu Apr 11 14:30:22 UTC 2024
+ ls /invalid_path
ls: cannot access '/invalid_path': No such file or directory
+ pwd
/home/user
Mã Thoát Của Lệnh
1. Khái Niệm
Mỗi lệnh trả về mã thoát (0-255):
0: Thành công1-255: Lỗi (thường dùng 1-255)
2. Kiểm Tra Và Thiết Lập
Kiểm tra mã thoát:
ls /nonexistent
echo $? # Kết quả: 2
Thiết lập mã thoát trong script:
#!/bin/bash
echo "Script execution completed"
exit 42
Chạy và kiểm tra:
bash script.sh
echo $? # Kết quả: 42