Câu lệnh if là một cấu trúc điều kiện giúp xây dựng tính logic, hỗ trợ ra quyết định và quản lý flow của script. Ngoài ra, câu lệnh if còn giúp script phản ứng linh hoạt với các tình huống khác nhau nhờ sự hỗ trợ của nhiều toán tử điều kiện như so sánh, logic, kiểm tra file,… Hãy cùng Vietnix tìm hiểu chi tiết hơn về câu lệnh if trong Bash qua bài viết sau.
Hiểu đúng về tập lệnh if trong Bash Script
Lệnh if (If Statement) trong Bash Script là một dạng câu lệnh điều kiện giúp kiểm soát luồng xử lý của chương trình dựa trên việc kiểm tra các điều kiện. Dựa vào kết quả đúng (true) hoặc sai (false) của điều kiện, tập lệnh if sẽ quyết định thực hiện một hoặc nhiều khối mã. Đây là một phần cơ bản trong lập trình để kiểm tra, xử lý các điều kiện logic trong chương trình Bash.
Giai đoạn đầu để thực hiện tốt các tập lệnh Script trong Bash Shell đầu tiên bạn cần làm quen với các hệ điều hành dựa trên Linux. Một số bản phân phối của Linux (Linux Distro) bạn có thể trải nghiệm thực hiện các câu lệnh trong Linux ban đầu như Ubuntu.
Cách hoạt động của if statement trên shell script
Chức năng chính của câu lệnh if là dùng để kiểm soát và đưa ra quyết định dựa trên các điều kiện cụ thể xem điều kiện đó là đúng hay sai. Nếu một điều kiện cụ thể được thỏa mãn, dòng lệnh if sẽ chạy tập lệnh bash trong môi trường (shell script) nhất định. Ngược lại, nếu điều kiện sai thì sẽ không có bất kỳ lệnh nào được thực thi tại Bash Shell.
Bên cạnh đó, bạn có thể áp dụng thử ngay cách chạy song song lệnh Bash với nhiều script với mỗi cú pháp lệnh khi sử dụng thành thạo. Ngoài đóng vai trò môi trường (shell), lệnh Bash vẫn được xem như command (dòng lệnh) hữu ích trong Linux giúp bạn thuận tiện trong việc thực hiện nhiều tập lệnh
3 cú pháp sử dụng của tập lệnh if trong Bash Shell
Cú pháp 1: Sử dụng lệnh đơn ngoặc vuông [ ] hoặc test
Cú pháp này hỗ trợ 3 loại kiểm tra có điều kiện như điều kiện số, điều kiện dựa trên chuỗi và điều kiện dựa trên tệp.
if [ condition ]; then
#Command to execute if it satisfies the condition
Fi
Hoặc bạn có thể viết như sau:
if test condition; then
Command to execute if it satisfies the condition
fi
Cú pháp 2: Thực thi statement với ngoặc vuông đôi [[ ]]
Dấu ngoặc vuông đôi [[ ]] hoạt động tương tự như dấu ngoặc vuông đơn [ ]. Tuy nhiên, [[ ]] cung cấp chức năng nâng cao hơn so với [ ].
if [[ condition ]]; then
#Command to execute if it satisfies the condition
fi
Cú pháp 3: Thực hiện cú pháp lệnh cùng ngoặc đơn kép (( ))
Sử dụng cú pháp dấu ngoặc đơn kép (( )) rất hữu ích cho các điều kiện dựa trên số hoặc phép tính số học.
if (( condition )); then
#Command to execute if it satisfies the condition
fi
3 cách sử dụng lệnh if trong Bash Script tùy theo ý định
- Thực thi lệnh if với một điều kiện
- Sử dụng lệnh với nhiều điều kiện
- Sử dụng nhiều câu lệnh if lồng nhau
Cách 1: Thực thi lệnh if với một điều kiện
Trong script Bash, câu lệnh if với một điều kiện là cấu trúc cơ bản nhất. Khi bạn sử dụng một toán tử điều kiện bên trong câu lệnh if
được hiểu là bạn muốn kiểm tra một điều kiện duy nhất. Sau đây là một ví dụ về câu lệnh if
trong Bash với một điều kiện duy nhất:
#!/bin/bash
number=2
#if statement with a single condition
if [ $number -lt 5 ]; then
echo "The variable is less than 5."
fi
Cách 2: Sử dụng lệnh với nhiều điều kiện
Khi sử dụng câu lệnh if
nhiều điều kiện, bạn không chỉ thực hiện được một số lệnh code block khi nhiều điều kiện được thỏa mãn, mà còn có thể thực hiện bất kỳ lệnh nào nếu một trong các điều kiện đó được thỏa mãn. Để sử dụng nhiều điều kiện trong một câu lệnh if duy nhất, bạn có thể thêm các toán tử logic (&& hoặc ||) vào giữa mỗi điều kiện như sau:
#!/bin/bash
echo "Enter username"
read username
echo "Enter password"
read password
if [[ "$username" == "X" && "$password" == "123" ]]; then
echo "Successfully logged in."
fi
Cách 3: Sử dụng nhiều câu lệnh if lồng nhau
Đôi khi, bạn có thể cần nhiều câu lệnh if
trong script của mình. Trong trường hợp đó, bạn có thể sử dụng một câu lệnh if
bên trong một câu lệnh if
khác, đây được gọi là câu lệnh if lồng nhau. Dưới đây là một ví dụ đơn giản cho bạn:
#!/bin/bash
number=60
#Nested if statements
if [ $number -gt 50 ]
then
echo "The number is greater than 50."
if (( $number % 2 == 0 ))
then
echo "It's an even number."
fi
fi
3 ví dụ về cách sử dụng lệnh if trong Bash
Ví dụ 1: Kiểm tra sự tồn tại của file bằng câu lệnh if
Để kiểm tra xem một file có tồn tại và là file thông thường hay không, hãy sử dụng tùy chọn -f
trong biểu thức kiểm tra của câu lệnh if
. Bạn hãy thực hiện theo script bên dưới để kiểm tra sự tồn tại của file:
#!/bin/bash
file_name="file1.txt"
#Checking if the file exists and is a regular file
if [ -f "$file_name" ]; then
echo "$file_name exists and is a regular file."
fi
Ví dụ 2: Sử dụng lệnh if để kiểm tra phép toán chẵn (chia hết)
Số chẵn được định nghĩa là một số nguyên chia hết cho 2 nghĩa là không có phần dư. Toán tử modulo (%) trả về phần dư của phép chia và giúp xác định xem một số có phải là số chẵn hay không. Sau đây là cách bạn có thể xác định xem một số có phải là số chẵn trong Bash nhờ câu lệnh if:
#!/bin/bash
#Checking if a number is even
is_even_number() {
if [ $(( $1 % 2 )) -eq 0 ]; then
echo "$1 is even."
fi
}
is_even_number 8
is_even_number 11
Ví dụ 3: Xử lý so sánh các số thực bằng câu lệnh if
Trong trường hợp bạn có các số thực khác nhau cần được xử lý trong các script Bash, bạn nên sử dụng câu lệnh if
kết hợp với lệnh bên ngoài bc (Basic Calculator). Dưới đây là một ví dụ về script so sánh các số thực:
#!/bin/bash
#Comparing floating-point numbers in Bash
variable1=5.95
variable2=5.951
#Defining a value of tolerance
tolerance=0.01
#Calculating the difference between the two floating-point numbers
difference=$(bc -l <<< "$variable1 - $variable2")
#Checking if the difference is less than the tolerance value
if (( $(bc -l <<< "$difference <= $tolerance") )); then
echo "The numbers are almost equal."
fi
Câu hỏi thường gặp
Có thể sử dụng lệnh if để tạo một menu tương tác trong Bash Script không?
Có thể. Sử dụng các vòng lặp và các lệnh nhập liệu từ người dùng (tạo menu) sẽ giúp bạn xây dựng những menu đa dạng và linh hoạt.
Có thể sử dụng lệnh if để kiểm tra kết quả của một lệnh khác trong Bash Script không?
Có thể. Người dùng có thể kiểm tra kết quả bằng mã trả về từ cách thực hiện
Lời kết
Tóm lại, câu lệnh if là một thành phần không thể thiếu trong Bash, giúp tối ưu hóa và đánh giá script của bạn để đưa ra quyết định tối ưu dựa trên các điều kiện khác nhau. Hy vọng bài viết có thể giúp bạn hiểu rõ hơn cũng như ứng dụng được lệnh if . Cảm ơn bạn đã theo dõi bài viết!