NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
25/09/2024
Lượt xem

Hướng dẫn sử dụng toán tử logic trong Bash qua 5 ví dụ chi tiết

25/09/2024
14 phút đọc
Lượt xem

Đánh giá

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ử logic trong Bash
Toán tử logic trong Bash

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 NOT.

  1. 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.
  2. 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.
  3. Toán tử NOT (cú pháp là !): Đảo ngược kết quả của một điều kiện.

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 (&&)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"

Giải thích: Bash Script ở trên bắt đầu bằng cách gán biến grade bằng 5 và biến name bằng “Bob”. Sau đó, sử dụng một câu lệnh điều kiện trong dấu ngoặc vuông kép ‘[[‘ để kiểm tra hai điều kiện cùng lúc. Điều kiện đầu tiên, $grade -ge 4, đánh giá xem biến grade có lớn hơn hoặc bằng 4 không. Điều kiện thứ hai, $name == “Bob”, kiểm tra xem biến name có bằng “Bob” không.

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.

kết hợp các toán tử logic để kiểm tra nhiều điều kiện cùng lúc
Kết hợp các toán tử logic để kiểm tra nhiều điều kiện cùng lúc

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

Giải thích:

Script Bash này kiểm tra xem có ít hơn 3 đối số dòng lệnh được cung cấp không bằng cách sử dụng biến $# lưu trữ số lượng đối số. Nếu có ít hơn 3 đối số, Script Bash hiển thị thông báo sử dụng và thoát. Sau đó, gán các biến age, name và is_student với các tham số vị trí $1, $2 và $3 tương ứng.

Tiếp theo, Script Bash sử dụng câu lệnh if với dấu ngoặc kép [[ … ]] để kiểm tra nhiều điều kiện. Sau đó, xác minh xem tuổi được lưu trữ trong biến age có lớn hơn 18 không, biến name có chứa chuỗi “John” không và biến is_student có được đặt thành true không. Nếu tất cả các điều kiện này được đáp ứng, Script Bash in ra thông báo “John is older than 18 and is a student”. Ngược lại thì hiển thị “John does not meet all the specified conditions”.

Thực hiện kiểm tra điều kiện bằng câu lệnh if-else
Thực hiện kiểm tra điều kiện bằng câu lệnh if-else

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 &&, ||! 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

Giải thích: Script này kiểm tra xem Alice có đủ điều kiện hay không dựa trên tuổi, tên và tình trạng sinh viên của cô ấy. Nếu Alice trên 18 tuổi, tên không phải là Bob và là sinh viên hoặc dưới 30 tuổi, thì cô ấy đủ điều kiện. Nếu không, cô ấy không đủ điều kiện.

Kết hợp nhiều toán tử logic trong một script Bash
Kết hợp nhiều toán tử logic trong một script Bash

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

Giải thích:

Script Bash này nhận một giá trị tham số dòng lệnh duy nhất và kiểm tra xem giá trị đó có nằm trong phạm vi từ 10 đến 20 bằng cách sử dụng câu lệnh if với toán tử logic && (AND). Nếu giá trị lớn hơn 10 AND nhỏ hơn 20, Script Bash sẽ in ra “The value is within the range of 10 to 20..” Ngược lại, Script Bash sẽ in ra “The value is not within the range of 10 to 20.”

Kiểm tra xem một số có nằm trong range cụ thể không
Kiểm tra xem một số có nằm trong range cụ thể không

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

Giải thích:

Script này kiểm tra xem người dùng có quyền sudo hay không. Để bắt đầu, script sẽ lấy tên người dùng được cung cấp khi chạy. Sau đó, nó sẽ kiểm tra hai điều kiện:

Người dùng có phải là root không? Nếu ID người dùng hiệu quả (UID) bằng 0, thì người dùng là root. Người dùng có quyền sudo không? Script sẽ sử dụng lệnh sudo để kiểm tra xem người dùng đó có quyền sudo hay không. Nếu người dùng có quyền sudo, script sẽ in ra thông báo rằng người dùng có quyền sudo và có thể là root hoặc admin. Nếu không thỏa mãn cả hai điều kiện trên, script sẽ thông báo rằng người dùng không phải là root và không có quyền sudo.

Kiểm tra điều kiện trong câu lệnh có đúng hay không
Kiểm tra điều kiện trong câu lệnh có đúng hay không

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

Giải thích:

Bash Script này bắt đầu bằng cách đặt tên cho một file là “test_file.txt”. Sau đó, Bash Script sẽ kiểm tra xem file này có tồn tại trong thư mục hiện tại hay không. Nếu không tồn tại, tập lệnh sẽ thông báo rằng tệp không được tìm thấy. Ngược lại nếu tồn tại, thì sẽ xác nhận sự có mặt của file.

Đảo ngược điều kiện trong câu lệnh bằng toán tử NOT
Đảo ngược điều kiện trong câu lệnh bằng toán tử NOT

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 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

Giải thích:

Đầu tiên Script yêu cầu user nhập tuổi và xem user có bị loại khỏi quyền bầu cử không. Script sử dụng lệnh read để thu thập các input này. Sau đó, sử dụng câu lệnh if để kiểm tra xem tuổi của user có lớn hơn hoặc bằng 18 và nếu câu trả lời của họ về việc bị loại khỏi quyền bầu cử không phải là “có”. Nếu cả hai điều kiện đều được đáp ứng, Script sẽ in ra “Congratulations! You are eligible to vote.” Nếu không, lệnh sẽ in ra “Sorry, you are not eligible to vote at the moment.”

Sử dụng toán tử NOT và AND trên cùng một dòng
Sử dụng toán tử NOT và AND trên cùng một dòng

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

Giải thích:

Tập lệnh trên sẽ  bắt đầu bằng việc yêu cầu user nhập đúng tên người dùng và mật khẩu. Tên user và mật khẩu chính xác là “miran” và 1234. Tập lệnh sử dụng lệnh read để nhắc người user điền thông tin của mình. Flag -s với lệnh read được sử dụng để ẩn mật khẩu khi user nhập.

Sau đó, tập lệnh sử dụng lệnh if để kiểm tra xem tên user và mật khẩu nhập vào có khớp thông tin chính xác hay không. Nếu tên user hoặc mật khẩu không chính xác, chương trình sẽ in ra thông báo “Login failed. Invalid username or password.”. Ngược lại, nếu cả hai đều chính xác, chương trình sẽ in ra thông báo “Login failed. Invalid username or password”.

Sử dụng toán tử OR và NOT trên cùng một dòng
Sử dụng toán tử OR và NOT trên cùng một dòng

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.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG