Cơ Bản Về Script Shell Trong Linux

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
Một script được viết đúng chuẩn sẽ có giá trị sử dụng lâu dài, giảm thiểu lỗi do thao tác thủ công.

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:

  1. ./script.sh: Chạy trực tiếp trong môi trường hiện tại
  2. bash 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ông
  • 1-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

Thẻ: bash scripting linux automation shell exit codes command line tools script best practices

Đăng vào ngày 19 tháng 7 lúc 18:24