Lệnh If trong Bash
Trong chủ đề này, chúng ta sẽ tìm hiểu cách sử dụng lệnh if trong các tập lệnh Bash để hoàn thành các tác vụ tự động.
Lệnh if trong Bash rất hữu ích. Chúng được sử dụng để thực hiện các tác vụ có điều kiện trong luồng thực thi tuần tự của các câu lệnh. Lệnh if thường cho phép chúng ta đưa ra quyết định trong các tập lệnh Bash của mình. Chúng giúp chúng ta quyết định có chạy một đoạn mã được cho trước hay không dựa trên điều kiện mà chúng ta có thể đặt.
Các Lệnh if Cơ Bản
Lệnh if cơ bản chỉ ra rằng nếu một điều kiện cụ thể là đúng, thì chỉ thực hiện một tập hợp hành động được cho trước. Nếu nó không đúng, thì không thực hiện những hành động đó. Lệnh if được dựa trên định dạng sau:
if [ expression ];
then
statements
fi
Câu lệnh giữa then
và fi
chỉ được thực thi khi biểu thức (nằm giữa hai dấu ngoặc vuông) là đúng.
Lưu ý: Chú ý đến khoảng trắng được sử dụng ở dòng đầu tiên và dấu chấm phẩy ở cuối dòng đầu tiên; cả hai đều là bắt buộc phải sử dụng. Câu lệnh điều kiện kết thúc bằng fi
. Để sử dụng nhiều điều kiện với toán tử AND:
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
Để sử dụng nhiều điều kiện với toán tử OR, chúng ta có thể sử dụng cú pháp sau:
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
Để sử dụng biểu thức phức hợp với các toán tử AND và OR, chúng ta có thể sử dụng cú pháp sau:
if [ expression_1 && expression_2 || expression_3 ];
then
statements
fi
Dưới đây là một vài ví dụ minh họa về cách sử dụng câu lệnh if:
Ví dụ 1
Trong ví dụ này, chúng ta sẽ nhập một số bất kỳ từ người dùng và kiểm tra xem giá trị đó có lớn hơn 125 không.
#!/bin/bash
read -p " Enter number : " number
if [ $number -gt 125 ]
then
echo "Value is greater than 125"
fi
Kết quả nếu chúng ta nhập số 159 sẽ như sau:
Ví dụ 2:
Trong ví dụ này, chúng ta sẽ minh họa cách sử dụng lệnh if để so sánh hai chuỗi:
#!/bin/bash
# if condition is true
if [ "myfile" == "myfile" ];
then
echo "true condition"
fi
# if condition is false
if [ "myfile" == "yourfile" ];
then
echo "false condition"
fi
Kết quả
Ví dụ 3
Trong ví dụ này, chúng ta sử dụng câu lệnh if để so sánh hai số và kiểm tra số nào lớn hơn.
Ví dụ 4
Trong ví dụ này, chúng ta sử dụng câu lệnh if để so sánh hai số và kiểm tra số nào lớn hơn.
#!/bin/bash
#if condition (greater than) is true
if [ 10 -gt 3 ];
then
echo "10 is greater than 3."
fi
#if condition (greater than) is false
if [ 3 -gt 10 ];
then
echo "3 is not greater than 10."
fi
#if condition (lesser than) is true
if [ 3 -lt 10 ];
then
echo "3 is less than 10."
fi
#if condition (lesser than) is false
if [ 10 -lt 3 ];
then
echo "10 is not less than 3."
fi
#if condition (equal to) is true
if [ 10 -eq 10 ];
then
echo "10 is equal to 10."
fi
#if condition (equal to) is false
if [ 10 -eq 9 ];
then
echo "10 is not equal to 9"
fi
Kết quả
Ví dụ 4
Trong ví dụ này, chúng ta sẽ định nghĩa cách sử dụng toán tử AND để bao gồm nhiều điều kiện trong biểu thức if:
#!/bin/bash
# TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi
# TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi
Kết quả
Ví dụ 5:
Trong ví dụ này, chúng ta sẽ mô tả cách sử dụng toán tử OR để bao gồm nhiều điều kiện trong biểu thức if:
#!/bin/bash
# TRUE || FALSE
if [ 8 -gt 7 ] || [ 10 -eq 3 ];
then
echo " Condition is true. "
fi
# FALSE || FALSE
if [ "mylife" == "yourlife" ] || [ 3 -gt 10 ];
then
echo " Condition is false. "
fi
Kết quả
Ví dụ 6:
Trong ví dụ này, chúng ta sẽ giải thích cách sử dụng cả toán tử AND và OR để đưa nhiều điều kiện vào biểu thức if:
#!/bin/bash
# TRUE && FALSE || FALSE || TRUE
if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]];
then
echo "Condition is true."
fi
# TRUE && FALSE || FALSE
if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]];
then
echo "Condition is false"
fi
Kết quả
Các tùy chọn cho câu lệnh If trong Bash Scripting
Câu lệnh If trong Bash Scripting có nhiều tùy chọn để thực hiện một tác vụ cụ thể. Các tùy chọn này có thể được sử dụng cho các hoạt động file, hoạt động chuỗi văn bản, v.v. Dưới đây là một số tùy chọn được sử dụng phổ biến:
Hành động | Mô tả |
---|---|
! EXPRESSION | Kiểm tra nếu biểu thức EXPRESSION là sai (false) |
-n STRING | Kiểm tra nếu độ dài của chuỗi STRING lớn hơn không |
-z STRING | Kiểm tra nếu độ dài của chuỗi STRING bằng không (tức là chuỗi rỗng) |
STRING1 == STRING2 | Kiểm tra nếu chuỗi STRING1 bằng chuỗi STRING2 |
STRING1 != STRING2 | Kiểm tra nếu chuỗi STRING1 khác chuỗi STRING2 |
INTEGER1 -eq INTEGER2 | Kiểm tra nếu số nguyên INTEGER1 bằng số nguyên INTEGER2 |
INTEGER1 -gt INTEGER2 | Kiểm tra nếu số nguyên INTEGER1 lớn hơn số nguyên INTEGER2 |
INTEGER1 -lt INTEGER2 | Kiểm tra nếu số nguyên INTEGER1 nhỏ hơn số nguyên INTEGER2 |
-d FILE | Kiểm tra nếu FILE tồn tại và là thư mục |
-e FILE | Kiểm tra nếu FILE tồn tại |
-r FILE | Kiểm tra nếu FILE tồn tại và được cấp quyền đọc |
-s FILE | Kiểm tra nếu FILE tồn tại và kích thước của nó lớn hơn không (tức là không rỗng) |
-w FILE | Kiểm tra nếu FILE tồn tại và được cấp quyền ghi |
-x FILE | Kiểm tra nếu FILE tồn tại và được cấp quyền thực thi |
If lồng nhau
Bạn có thể áp dụng nhiều ‘if statements’ tùy ý trong tập lệnh Bash của mình. Cũng có thể sử dụng một câu lệnh if bên trong một câu lệnh ‘if statement’ khác. Đó được gọi là Nested If Statement.
Trong ví dụ này, chúng ta sẽ tìm “nếu một số đã cho lớn hơn 50 và nếu đó là một số chẵn” bằng cách sử dụng biểu thức if lồng nhau.
#!/bin/bash
#Nested if statement
if [ $1 -gt 50 ]
then
echo "Number is greater than 50."
if (( $1 % 2 == 0 ))
then
echo "and it is an even number."
fi
fi
Nếu chúng ta nhập giá trị đối số là 100, thì kết quả sẽ như sau:
Kết luận Trong chủ đề này, chúng ta đã thảo luận về cách sử dụng nhánh điều kiện trong luồng thực thi tuần tự của các câu lệnh với câu lệnh if trong Bash.