Các câu lệnh điều kiện trong Shell Scripting

Trong lập trình Shell, các câu lệnh điều kiện cho phép bạn kiểm tra một điều kiện và thực thi các khối mã khác nhau dựa trên kết quả của việc kiểm tra đó. Kết quả của một phép kiểm tra được biểu thị bằng mã trạng thái thoát của lệnh: 0 cho True (đúng) và giá trị khác 0 cho False (sai).

1. Kiểm tra điều kiện

Về cơ bản, kiểm tra điều kiện liên quan đến việc xác định xem một điều kiện đã cho có đúng hay sai hay không, sau đó thực thi một đoạn mã cụ thể dựa trên kết quả này.

1.1 Kiểm tra tệp tin

Các toán tử sau đây được sử dụng để kiểm tra các thuộc tính của tệp tin hoặc thư mục:

  • -e <tệp_tin>: Kiểm tra xem tệp tin hoặc thư mục có tồn tại không.
  • -d <tệp_tin>: Kiểm tra xem có phải là một thư mục không.
  • -f <tệp_tin>: Kiểm tra xem có phải là một tệp tin thông thường không.
  • -r <tệp_tin>: Kiểm tra xem người dùng hiện tại có quyền đọc không.
  • -w <tệp_tin>: Kiểm tra xem người dùng hiện tại có quyền ghi không.
  • -x <tệp_tin>: Kiểm tra xem người dùng hiện tại có quyền thực thi không.

Cú pháp có thể là test [toán_tử] [tệp_tin] hoặc [ [toán_tử] [tệp_tin] ]. Lưu ý khoảng trắng quan trọng trong cú pháp thứ hai.

1.2 Kiểm tra số nguyên

Các toán tử sau đây được sử dụng để so sánh các số nguyên:

  • -eq hoặc ==: Bằng
  • -ne hoặc !=: Khác
  • -gt hoặc >: Lớn hơn
  • -lt hoặc <: Nhỏ hơn
  • -ge hoặc >=: Lớn hơn hoặc bằng
  • -le hoặc <=: Nhỏ hơn hoặc bằng

Cú pháp có thể là test [số1] [toán_tử] [số2] hoặc [ [số1] [toán_tử] [số2] ].

Lưu ý: Khi sử dụng các ký tự >, <, >=, <=, bạn cần sử dụng dấu ngoặc đơn kép ((...)). Dấu ngoặc vuông kép [[...]] chỉ hỗ trợ ><.

1.3 Kiểm tra chuỗi

Các toán tử sau đây được sử dụng để so sánh các chuỗi:

  • ==: Kiểm tra xem nội dung chuỗi có giống nhau không.
  • !=: Kiểm tra xem nội dung chuỗi có khác nhau không.

Cú pháp là [ [chuỗi1] [toán_tử] [chuỗi2] ].

1.4 Kiểm tra logic

Các toán tử sau đây được sử dụng để kết hợp các biểu thức điều kiện:

  • -a hoặc &&: Toán tử AND (logic "Và"). Cả hai biểu thức phải đúng để kết quả là đúng.
  • -o hoặc ||: Toán tử OR (logic "Hoặc"). Chỉ cần một trong hai biểu thức đúng là kết quả đúng.
  • !: Toán tử NOT (logic "Phủ định"). Đảo ngược kết quả của biểu thức.

Có hai cách viết cú pháp:

[ [biểu_thức1] -a [biểu_thức2] ]
[ [biểu_thức1] ] && [ [biểu_thức2] ]
[[ [biểu_thức1] && [biểu_thức2] ]]

2. Câu lệnh IF

2.1 IF đơn nhánh

Thực thi mã nếu điều kiện đúng.

if [ điều_kiện_kiểm_tra ]
then
  # Mã thực thi khi điều kiện đúng
fi

2.2 IF hai nhánh

Thực thi một khối mã nếu điều kiện đúng và một khối mã khác nếu điều kiện sai.

if [ điều_kiện_kiểm_tra ]
then
  # Mã thực thi khi điều kiện đúng
else
  # Mã thực thi khi điều kiện sai
fi

2.3 IF nhiều nhánh

Cho phép kiểm tra nhiều điều kiện tuần tự.

if [ điều_kiện_1 ]
then
  # Mã thực thi khi điều kiện 1 đúng
elif [ điều_kiện_2 ]
then
  # Mã thực thi khi điều kiện 2 đúng
else
  # Mã thực thi khi tất cả các điều kiện trên đều sai
fi

3. Câu lệnh CASE

Câu lệnh CASE cho phép bạn so sánh một biến với nhiều mẫu (pattern) khác nhau và thực thi mã dựa trên mẫu khớp đầu tiên.

case biến in
mẫu1)
  # Mã thực thi khi khớp với mẫu 1
  ;;
mẫu2)
  # Mã thực thi khi khớp với mẫu 2
  ;;
*)
  # Mã thực thi khi không khớp với bất kỳ mẫu nào
esac

Dấu ;; kết thúc một khối lệnh cho một mẫu. Dấu *) đóng vai trò như một điều kiện "mặc định" nếu không có mẫu nào khớp.

Thẻ: Shell Scripting Bash câu lệnh điều kiện if else case

Đăng vào ngày 25 tháng 7 lúc 04:58