Câu lệnh IF

Nhập môn Bash Scripting

Alex Scriven

Data Scientist

Câu lệnh IF cơ bản

Một câu lệnh IF cơ bản trong Bash có cấu trúc sau:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

Hai lưu ý:

  • Có khoảng trắng giữa ngoặc vuông và các thành phần điều kiện (dòng đầu)
  • Dấu chấm phẩy sau ngoặc đóng ];
Nhập môn Bash Scripting

IF và chuỗi

Ta có thể so sánh chuỗi cơ bản trong một câu lệnh IF:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

Bạn cũng có thể dùng != cho “khác”

Nhập môn Bash Scripting

IF số học (cách 1)

IF số học có thể dùng cấu trúc ngoặc tròn kép:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Nhập môn Bash Scripting

IF số học (cách 2)

IF số học cũng có thể dùng ngoặc vuông và cờ số học thay cho (>, <, =, !=…):

  • -eq là “bằng”
  • -ne là “khác”
  • -lt là “nhỏ hơn”
  • -le là “nhỏ hơn hoặc bằng”
  • -gt là “lớn hơn”
  • -ge là “lớn hơn hoặc bằng”
Nhập môn Bash Scripting

Ví dụ IF số học

Ta viết lại ví dụ trước bằng ngoặc vuông:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Nhập môn Bash Scripting

Các cờ điều kiện khác của Bash

Bash có nhiều cờ liên quan đến tệp như:

  • -e nếu tệp tồn tại
  • -s nếu tệp tồn tại và có kích thước > 0
  • -r nếu tệp tồn tại và đọc được
  • -w nếu tệp tồn tại và ghi được

Và nhiều cờ khác:

Nhập môn Bash Scripting

Dùng AND và OR trong Bash

 

Để kết hợp điều kiện (AND) hoặc dùng OR trong Bash, dùng các ký hiệu sau:

  • && cho AND
  • || cho OR
Nhập môn Bash Scripting

Nhiều điều kiện

Trong Bash bạn có thể xâu chuỗi điều kiện như sau:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

Hoặc dùng cú pháp ngoặc vuông kép:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Nhập môn Bash Scripting

IF và các chương trình dòng lệnh

Bạn cũng có thể dùng nhiều chương trình dòng lệnh trực tiếp trong điều kiện, loại bỏ ngoặc vuông.

Ví dụ, nếu tệp words.txt chứa 'Hello World!':

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Nhập môn Bash Scripting

IF với shell lồng nhau

Bạn cũng có thể gọi một shell bên trong shell cho điều kiện.

Viết lại ví dụ trước; kết quả như nhau.

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Nhập môn Bash Scripting

Ayo berlatih!

Nhập môn Bash Scripting

Preparing Video For Download...