Cơ bản về câu lệnh if trong Bash
Câu lệnh if (conditional statement) cho phép thực hiện hành động khác nhau tùy theo điều kiện. Nó trao cho script khả năng "ra quyết định".
Cú pháp đơn giản nhất
count=5 if [ $count == 5 ] then echo "$count" fi
Giải thích:
- Biến
countgán giá trị5. if [ $count == 5 ]kiểm tra điều kiện.- Nếu đúng → chạy lệnh giữa
thenvàfi(in ra5). - Nếu sai → bỏ qua, chạy lệnh sau khối
if.
fi là if viết ngược — đánh dấu kết thúc khối if (tương tự case kết thúc bằng esac).
Lệnh echo in đối số ra terminal. Thụt lề (indentation) giúp đọc code dễ hơn nhưng không bắt buộc.
Câu lệnh if ... else
Dùng khi cần chạy code khác nếu điều kiện sai:
count=5 if [ $count == 5 ] then echo "$count" else echo "count is not 5" fi
Nếu $count == 5 đúng → in giá trị count. Sai → in "count is not 5".
Câu lệnh if ... elif ... else (nhiều điều kiện)
elif = else if. Dùng để phân nhánh nhiều điều kiện:
if [ $count == 5 ] then echo "count is five" elif [ $count == 6 ] then echo "count is six" else echo "none of the above" fi
count = 5→ "count is five"count = 6→ "count is six"- Còn lại → "none of the above"
Có thể dùng bao nhiêu elif tùy ý:
if [ $count == 5 ]; then echo "five" elif [ $count == 6 ]; then echo "six" elif [ $count == 7 ]; then echo "seven" elif [ $count == 8 ]; then echo "eight" elif [ $count == 9 ]; then echo "nine" else echo "none of the above" fi
Cách viết gọn hơn: case statement
Khi có nhiều điều kiện so sánh bằng giá trị cố định, case ngắn gọn và dễ đọc hơn:
case "$count" in 5) echo "count is five" ;; 6) echo "count is six" ;; 7) echo "count is seven" ;; 8) echo "count is eight" ;; 9) echo "count is nine" ;; *) echo "none of the above" ;; esac
*)tương đươngelse(trường hợp còn lại).- Mỗi mẫu kết thúc bằng
;;.
Kết hợp if trong vòng lặp
Ví dụ if bên trong while loop:
count=1
done=0
while [ $count -le 9 ]
do
sleep 1
(( count++ ))
if [ $count == 5 ]
then
continue
fi
echo "$count"
done
echo "Finished"
Vòng lặp in 1-9 nhưng bỏ qua số 5 nhờ continue khi count == 5.
Lồng nhau (Nested if)
Có thể lồng if trong if với độ phức tạp tùy ý. Dạng đơn giản:
if condition1; then
if condition2; then
# code
fi
fi
Mở rộng
- Xem thêm: Cách truyền tham số cho Bash script — dùng điều kiện xử lý đối số dòng lệnh.
- Bash còn cung cấp:
forloop,whileloop, biểu thức số học,case, hàm (function), mảng...
Mẹo: Luôn đặt biến trong ngoặc kép "$var" để tránh lỗi khi giá trị rỗng hoặc chứa khoảng trắng. Dùng [[ ... ]] thay [ ... ] cho tính năng mở rộng (regex, pattern matching) và an toàn hơn.