Trong lập trình Shell, đặc biệt là với Bash, việc sử dụng các cấu trúc điều kiện là rất quan trọng để kiểm tra điều kiện trước khi thực hiện một hành động nào đó. Hai biểu thức điều kiện chính thường gặp là if-else-elif
và case
. Bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng các cấu trúc này trong Bash, cùng với ví dụ minh họa để bạn có thể áp dụng vào thực tế.
Khái niệm cơ bản về cấu trúc điều kiện trong Bash
Trước khi đi vào các cấu trúc điều kiện cụ thể, hãy cùng điểm qua một số khái niệm cơ bản về câu lệnh điều kiện trong Bash. Câu lệnh điều kiện cho phép bạn kiểm tra các điều kiện khác nhau và thực hiện các hành động tương ứng dựa trên kết quả của các điều kiện đó.
1. Cấu trúc if-else-elif
Cấu trúc if-else-elif
là một trong những cách phổ biến nhất để kiểm tra điều kiện trong Bash. Cách thức hoạt động của nó tương đối đơn giản; nếu điều kiện đầu tiên là đúng (true), thì khối lệnh đầu tiên sẽ được thực hiện. Nếu điều kiện đầu tiên sai (false), Bash sẽ kiểm tra tiếp các điều kiện khác, nếu có.
Dưới đây là cú pháp cơ bản cho cấu trúc này:
if [ điều kiện ]; then
# Khối lệnh thực thi nếu điều kiện đúng
elif [ điều kiện khác ]; then
# Khối lệnh thực thi nếu điều kiện khác đúng
else
# Khối lệnh thực thi nếu tất cả các điều kiện đều sai
fi
2. Cấu trúc case
Cấu trúc case
thường được sử dụng khi bạn có nhiều điều kiện khác nhau để kiểm tra một giá trị cụ thể. Cấu trúc này giúp mã nguồn của bạn trở nên sạch sẽ và dễ đọc hơn khi bạn cần so sánh một giá trị với nhiều lựa chọn.
Dưới đây là cú pháp cơ bản cho cấu trúc case
:
case biến trong
mẫu1)
# Khối lệnh thực thi cho mẫu1
;;
mẫu2)
# Khối lệnh thực thi cho mẫu2
;;
*)
# Khối lệnh thực thi nếu không khớp với bất kỳ mẫu nào
;;
esac
Áp dụng cấu trúc if-else-elif trong Bash
Hãy đi vào ví dụ cụ thể để hiểu rõ hơn về cách hoạt động của cấu trúc if-else-elif
.
Ví dụ 1: Kiểm tra số âm, số dương, hoặc số 0
#!/bin/bash
echo "Nhập một số: "
read số
if [ $số -gt 0 ]; then
echo "Đây là một số dương."
elif [ $số -lt 0 ]; then
echo "Đây là một số âm."
else
echo "Đây là số 0."
fi
Trong ví dụ này, chúng ta kiểm tra đầu vào của người dùng để xác định số đó là âm, dương hay bằng 0. Sử dụng toán tử -gt
để kiểm tra lớn hơn, -lt
kiểm tra nhỏ hơn, và không cần thiết phải sử dụng toán tử cho trường hợp bằng 0.
Sử dụng nhiều điều kiện trong if-else
Bạn có thể sử dụng nhiều điều kiện trong một câu lệnh if
bằng cách kết hợp với toán tử logic:
#!/bin/bash
echo "Nhập một số: "
read số
if [ $số -gt 0 ] && [ $số -lt 100 ]; then
echo "Số bạn nhập nằm trong khoảng từ 1 đến 99."
else
echo "Số bạn nhập không nằm trong khoảng từ 1 đến 99."
fi
Ví dụ 2: Kiểm tra độ tuổi
#!/bin/bash
echo "Nhập độ tuổi của bạn: "
read tuổi
if [ $tuổi -lt 13 ]; then
echo "Bạn là trẻ em."
elif [ $tuổi -lt 20 ]; then
echo "Bạn là thanh thiếu niên."
else
echo "Bạn là người lớn."
fi
Trong ví dụ này, chúng ta xác định độ tuổi của người dùng và phân loại họ thành trẻ em, thanh thiếu niên hoặc người lớn dựa trên độ tuổi nhập vào.
Cấu trúc case trong Bash
Cấu trúc case
cực kỳ hữu ích khi bạn cần kiểm tra một biến với nhiều giá trị khác nhau. Hãy xem một ví dụ để hiểu rõ cách sử dụng nó.
Ví dụ 3: Xử lý menu
#!/bin/bash
echo "Chọn một lựa chọn từ menu:"
echo "1. Thêm"
echo "2. Xóa"
echo "3. Hiển thị"
echo "4. Thoát"
read lựa_chọn
case $lựa_chọn in
1)
echo "Bạn đã chọn thêm."
;;
2)
echo "Bạn đã chọn xóa."
;;
3)
echo "Bạn đã chọn hiển thị."
;;
4)
echo "Bạn đã chọn thoát."
;;
*)
echo "Lựa chọn không hợp lệ."
;;
esac
Trong ví dụ này, người dùng được yêu cầu chọn một mục từ menu. Cấu trúc case
giúp chúng ta kiểm tra lựa chọn của người dùng và phản hồi lại một cách chính xác.
Kết hợp if-else và case
Bạn có thể kết hợp cả hai cấu trúc if-else
và case
trong một kịch bản Bash để xử lý logic phức tạp hơn.
Ví dụ 4: Kết hợp if và case
#!/bin/bash
echo "Nhập một số từ 1 đến 10:"
read số
if [[ $số -ge 1 && $số -le 10 ]]; then
case $số in
1) echo "Bạn đã nhập số một." ;;
2) echo "Bạn đã nhập số hai." ;;
3) echo "Bạn đã nhập số ba." ;;
4) echo "Bạn đã nhập số bốn." ;;
5) echo "Bạn đã nhập số năm." ;;
6) echo "Bạn đã nhập số sáu." ;;
7) echo "Bạn đã nhập số bảy." ;;
8) echo "Bạn đã nhập số tám." ;;
9) echo "Bạn đã nhập số chín." ;;
10) echo "Bạn đã nhập số mười." ;;
esac
else
echo "Số nhập vào không hợp lệ, vui lòng nhập từ 1 đến 10."
fi
Kết luận
Việc làm quen với các cấu trúc điều kiện trong Bash dễ dàng hơn nhiều nếu bạn thực hành thường xuyên. Cấu trúc if-else-elif
và case
là công cụ mạnh mẽ giúp bạn xử lý nhiều kịch bản khác nhau trong lập trình Shell. Hãy chắc chắn rằng bạn hiểu rõ cách hoạt động của chúng để xây dựng các ứng dụng mạnh mẽ và linh hoạt hơn.
Việc áp dụng các câu lệnh điều kiện vào kịch bản của bạn sẽ giúp bạn xử lý logic một cách hiệu quả, từ việc kiểm tra giá trị số đến xử lý đầu vào từ người dùng. Hy vọng rằng bài viết đã cung cấp cho bạn một cái nhìn sâu sắc và hữu ích về cách sử dụng cấu trúc điều kiện trong Bash.
Comments