Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách viết câu lệnh IF trong Bash Script

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 count gán giá trị 5.
  • if [ $count == 5 ] kiểm tra điều kiện.
  • Nếu đúng → chạy lệnh giữa then và fi (in ra 5).
  • 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 đương else (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: for loop, while loop, 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.