Toán tử logic trong Bash là công cụ giúp bạn tạo ra các script Bash linh hoạt và thông minh hơn, xử lý logic phức tạp và đưa ra quyết định dựa trên nhiều yếu tố khác nhau. Bài viết này sẽ đi sâu vào cách thức hoạt động, chức năng và ứng dụng của các toán tử logic trong script Bash.
Toán tử logic trong Bash là gì?
Toán tử logic trong Bash là những ký hiệu đặc biệt như AND - &&, OR - ||, NOT - !
được sử dụng để kết hợp các điều kiện đơn lẻ thành các biểu thức logic phức tạp hơn. Chúng cho phép chúng ta thực hiện các phép so sánh và kiểm tra nhiều điều kiện cùng một lúc, từ đó đưa ra quyết định về việc thực thi các lệnh tiếp theo.
Toán tử được xem là một thành phần xuất hiện nhiều trong các quá trình chạy tập lệnh bash. Ngoài việc đóng vai trò là một shell (môi trường thực hiện lệnh), Bash còn được xem là một dòng lệnh hữu ích trong Linux – lệnh Bash.
Bên cạnh đó, bạn có thể tìm hiểu thêm: Bash có phải là ngôn ngữ lập trình
3 loại toán tử logic trong Bash
Bash cung cấp 3 loại toán tử logic chính: AND
, OR
và NOT
.
- Toán tử AND (cú pháp là &&): Trả về kết quả đúng chỉ khi cả hai điều kiện được đánh giá đều đúng.
- Toán tử OR (cú pháp là ||): Trả về kết quả đúng nếu ít nhất một trong các điều kiện được đánh giá là đúng.
- Toán tử NOT (cú pháp là !): Đảo ngược kết quả của một điều kiện.
3 trường hợp sử dụng toán tử logic trong Bash Scripting
Trường hợp 1: Kết hợp nhiều điều kiện với toán tử logic
Bạn có thể kết hợp các toán tử logic để kiểm tra nhiều điều kiện cùng lúc. Ví dụ sau sử dụng 2 toán tử AND (&&)
và lệnh echo
để hiển thị kết quả ra màn hình:
#!/bin/bash
grade=5
name="Bob"
[[ $grade -ge 4 && $name == "Bob" ]] && echo "Student name is $name and Grade is Greater than 4"
Tiếp đến toán tử &&
đảm bảo rằng cả hai điều kiện phải đúng để lệnh tiếp theo được thực thi. Nếu cả hai điều kiện đều thỏa mãn thì trên giao diện Terminal sẽ in ra thông báo “Student name is Bob and Grade is Greater than 4” lên màn hình console.
Trường hợp 2: Sử dụng toán tử logic trong câu lệnh if-else
Toán tử logic thường được sử dụng trong câu lệnh if-else (lệnh if) để thực hiện kiểm tra điều kiện. Ví dụ:
#!/bin/bash
# Check if the number of arguments is less than 3
if [ $# -lt 3 ]; then
echo "Usage: $0 <age> <name> <is_student>"
exit 1
fi
age=$1
name=$2
is_student=$3
if [[ $age -gt 18 && $name == "John" && $is_student == true ]]; then
echo "John is older than 18 and is a student."
else
echo "John does not meet all the specified conditions."
fi
Trường hợp 3: Kết hợp nhiều toán tử logic trong một script Bash
Bạn có thể kết hợp nhiều toán tử logic &&, || và ! trong cùng một script Bash. Ví dụ:
#!/bin/bash
age=25
name="Alice"
is_student=true
if [[ $age -ge 18 && $name != "Bob" || ($is_student == true && $age -le 30) ]]; then
echo "Alice is eligible: older than 18, not named Bob, and either a student or under 30 years old."
else
echo "Alice does not meet the specified conditions."
fi
5 ví dụ thực tế về cách sử dụng toán tử logic trong Bash Scripting
Ví dụ 1: Kiểm tra xem một số có nằm trong range cụ thể không
Toán tử logic cho phép bạn tạo ra các biểu thức phức tạp bằng cách kết hợp nhiều điều kiện. Ví dụ, đoạn script Bash sau đây kiểm tra xem một giá trị số được truyền vào từ đối số dòng lệnh có nằm trong range từ 10 đến 20 hay không.
#!/bin/bash
value=$1
if [[ $value -gt 10 && $value -lt 20 ]]; then
echo "The value is within the range of 10 to 20."
else
echo "The value is not within the range of 10 to 20."
fi
Kết quả: Nếu chạy file number_range.sh
với đối số là 34, Script Bash sẽ trả về “The value is not within the range of 10 to 20.” Ngược lại, nếu chạy dile number_range.sh
với đối số là 15, Script Bash sẽ hiển thị “The value is within the range of 10 to 20.”
Ví dụ 2: Kiểm tra điều kiện trong câu lệnh có đúng hay không
Toán tử OR (||)
được sử dụng để kiểm tra xem có ít nhất một điều kiện trong câu lệnh điều kiện là đúng hay không. Ví dụ, đoạn script Bash sau đây xác định xem một user (được lưu trữ trong biến username) có phải là root hoặc admin hay không, từ đó xác định xem người dùng có quyền quản trị hệ thống hay không.
#!/bin/bash
# Define the username you want to check
username="$1"
# Check if the user is either the root user or has sudo privileges
if [ "$UID" -eq 0 ] || sudo -lU "$username" | grep -q "(ALL : ALL)"; then
echo "$username has sudo privileges, hence is either root or admin user"
else
echo "The username '$username' is neither root nor has sudo privileges."
fi
Kết quả: Trong hình minh họa ở trên, John là một user mới được tạo và không có quyền sudo
. Khi lấy John làm đối số dòng lệnh, script sẽ in ra thông báo cho biết John không có quyền sudo
. Ngược lại, miran là user hiện tại và có quyền sudo
. Do đó, script sẽ xác nhận quyền hạn của miran khi được thực thi.
Ví dụ 3: Đảo ngược điều kiện trong câu lệnh bằng toán tử NOT
Toán tử NOT (!)
được sử dụng để đảo ngược điều kiện trong câu lệnh if của Bash. Bạn hãy xem ví dụ sau để hiểu rõ hơn về cách sử dụng toán tử NOT
:
#!/bin/bash
# Define a new filename
file_to_check=$1
# Check if the file exists
if [[ ! -e "$file_to_check" ]]; then
echo "The file '$file_to_check' does not exist."
else
echo "The file '$file_to_check' exists."
fi
Kết quả: Trong hình minh họa ở trên, file test_file.txt đã tồn tại trong thư mục hiện tại. Do đó, khi chạy script, kết quả trả về sẽ là “The file ‘test_file.txt’ exists”.
Ví dụ 4: Sử dụng toán tử NOT và AND trên cùng một dòng
Để kết hợp toán tử NOT
và AND
trên cùng một dòng, bạn có thể tham khảo sử dụng đoạn script sau:
#!/bin/bash
# Prompt the user to enter their age and whether they have a voting disqualification
echo "Welcome to the Voting Eligibility Checker!"
read -p "Please enter your age: " age
read -p "Do you have any voting disqualifications? (yes or no): " disqualifications
# Check if the user is old enough and not disqualified
if [ $age -ge 18 ] && [ "$disqualifications" != "yes" ]; then
echo "Congratulations! You are eligible to vote."
else
echo "Sorry, you are not eligible to vote at the moment."
fi
Kết quả: Trong hình ảnh minh họa ở trên, người dùng đã nhập tuổi là 25 và trả lời “no” cho câu hỏi về việc bị cấm bầu cử. Do đó, dựa trên các điều kiện đã đặt, đoạn code in ra kết quả “Congratulations! You are eligible to vote”.
Ví dụ 5: Sử dụng toán tử OR và NOT trên cùng một dòng
Để sử dụng kết hợp toán tử OR và NOT trong một dòng, bạn hãy tham khảo script sau:
#!/bin/bash
echo "Give your correct username and password to get a greeting"
# Set the correct username and password
correct_username="miran"
correct_password="1234"
# Prompt the user to enter their credentials
read -p "Enter your username: " username
read -s -p "Enter your password: " password
# Check if the entered credentials are correct
if [ "$username" != "$correct_username" ] || [ "$password" != "$correct_password" ]; then
echo -e "\nLogin failed. Invalid username or password."
else
echo -e "\nLogin successful! Welcome, $username."
fi
Kết quả: Trong hình minh họa, do user đã cung cấp chính xác cả username và password nên kết quả trả về là “Login successful! Welcome, miran.”.
Câu hỏi thường gặp
Có thể kết hợp nhiều toán tử logic trong cùng một biểu thức điều kiện không?
Hoàn toàn có thể. Sự kết hợp nhiều toán tử cho phép bạn tạo ra điều kiểm kiểm tra
Toán tử logic có thể được sử dụng trong các vòng lặp không?
Có thể. Việc giúp bạn kiểm soát chặt chẽ hơn quá trình lặp và thực hiện các hành động tùy thuộc vào các điều kiện khác nhau.
Lời kết
Bài viết đã cung cấp cái nhìn chi tiết về các toán tử logic trong Bash, từ chức năng, cách sử dụng đến ví dụ minh họa cụ thể. Hy vọng những kiến thức này sẽ giúp bạn sử dụng thành thạo toán tử logic để viết các script Bash hiệu quả hơn.