Trong chủ đề này, chúng ta sẽ thảo luận về cơ bản của câu lệnh case và cách sử dụng chúng trong các tập lệnh Bash.
Câu lệnh case của Bash là dạng đơn giản nhất của IF-THEN-ELSE với nhiều phần tử ELIF. Sử dụng câu lệnh case giúp cho tập lệnh bash của chúng ta dễ đọc hơn và dễ bảo trì hơn. Những điều này thường được áp dụng để đơn giản hóa các điều kiện phức tạp có nhiều lựa chọn khác nhau.
Câu lệnh case của Bash tuân theo một logic tương tự như câu lệnh switch trong Javascript hoặc C. Có một chút khác biệt, như sau:
Câu lệnh case của Bash nhận một giá trị một lần và kiểm tra giá trị đó nhiều lần. Nó sẽ dừng tìm kiếm một mẫu khi nó đã tìm thấy và thực thi câu lệnh liên quan đến nó, điều này hoàn toàn ngược lại so với câu lệnh switch của C. Cú pháp câu lệnh Case Cú pháp của câu lệnh case của Bash được đưa ra như sau:
case expression in
pattern_1)
statements
;;
pattern_2)
statements
;;
pattern_3|pattern_4|pattern_5)
statements
;;
pattern-n)
statements
;;
*)
statements
;;
esac
Điểm quan trọng của câu lệnh case trong Bash:
Mỗi câu lệnh case trong Bash bắt đầu bằng từ khóa ‘case’, tiếp theo là biểu thức case và từ khóa ‘in’. Câu lệnh case được kết thúc bằng từ khóa ‘esac’.
Chúng ta có thể áp dụng nhiều mẫu phân tách bởi toán tử |. Toán tử ‘)’ chỉ ra sự kết thúc của danh sách mẫu.
Một mẫu chứa các câu lệnh được gọi là một clause, và nó phải được kết thúc bằng hai dấu chấm phẩy (;;).
Một ký hiệu sao (*) được sử dụng làm mẫu cuối cùng để xác định trường hợp mặc định. Nó được sử dụng như là trường hợp mặc định khi được sử dụng làm trường hợp cuối cùng.
Cách hoạt động
Trước hết, câu lệnh case mở rộng biểu thức và cố gắng khớp với từng mẫu được bao gồm. Khi tìm thấy một sự khớp, tất cả các câu lệnh liên kết được thực thi cho đến dấu chấm phẩy hai lần (;;). Sau khi tìm thấy sự khớp đầu tiên, case kết thúc với trạng thái thoát của câu lệnh cuối cùng.
Nếu không có mẫu nào khớp, trạng thái thoát của case là 0. Nếu không, trạng thái trả về là trạng thái thoát của các câu lệnh được thực thi.
Nếu sử dụng mẫu sao mặc định, nó sẽ được thực thi trong trường hợp không có mẫu khớp.
Hãy cố gắng hiểu cơ chế này với một vài ví dụ:
Ví dụ 1: Trong ví dụ này, chúng ta đã xác định một kịch bản đơn giản để giải thích việc sử dụng câu lệnh case.
#!/bin/bash
echo "Do you know Java Programming?"
read -p "Yes/No? :" Answer
case $Answer in
Yes|yes|y|Y)
echo "That's amazing."
echo
;;
No|no|N|n)
echo "It's easy. Let's start learning from javatpoint."
;;
esac
Kết quả
Ví dụ 2: Trong ví dụ này, chúng ta đã định nghĩa một tình huống kết hợp khi có một trường hợp mặc định khi không tìm thấy trường hợp trước đó.
Kịch bản Bash:
#!/bin/bash
echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read -p "Type your OS Name:" OS
case $OS in
Windows|windows)
echo "That's common. You should try something new."
echo
;;
Android|android)
echo "This is my favorite. It has lots of applications."
echo
;;
Chrome|chrome)
echo "Cool!!! It's for pro users. Amazing Choice."
echo
;;
Linux|linux)
echo "You might be serious about security!!"
echo
;;
*)
echo "Sounds interesting. I will try that."
echo
;;
esac
Kết quả chúng ta đã chạy script với ba giá trị khác nhau, kiểm tra kết quả dưới đây:
Kết luận
Trong chủ đề này, chúng ta đã học về cú pháp và cách sử dụng câu lệnh Case trong Bash với các ví dụ.