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
15 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="An"

[[ $grade -ge 4 && $name == "An" ]] && echo "Student name is $name and Grade is Greater than 4"
Input
Input

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 “An”. 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 == “An”, kiểm tra xem biến name có bằng “An” 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 An 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 == "An" && $is_student == true ]]; then

    echo "An is older than 18 and is a student."

else

    echo "An does not meet all the specified conditions."

fi
Input
Input

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 “An” 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 “An is older than 18 and is a student”. Ngược lại thì hiển thị “An 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="An"

is_student=true

if [[ $age -ge 18 && $name != "Quan" || ($is_student == true && $age -le 30) ]]; then

    echo "An is eligible: older than 18, not named Quan, and either a student or under 30 years old."

else

    echo "An does not meet the specified conditions."

fi
Input
Input

Giải thích: Script này kiểm tra xem An 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 An trên 18 tuổi, tên không phải là Quan 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 "Giá trị thuộc khoảng 10 tới 20."

else

  echo "Giá trị không thuộc khoảng 10 tới 20."

fi
Input
Input

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 “Giá trị thuộc khoảng 10 tới 20..” Ngược lại, Script Bash sẽ in ra “Giá trị không thuộc khoảng 10 tới 20.”

Kiểm tra xem một chuỗi có nằm trong range cụ thể không
Kiểm tra xem một chuỗi có nằm trong range cụ thể không

Kết quả: Nếu chạy file ex1.sh với đối số là 34, Script Bash sẽ trả về “Giá trị không thuộc khoảng 10 tới 20.” Ngược lại, nếu chạy file ex1.sh với đối số là 14, Script Bash sẽ hiển thị “Giá trị thuộc khoảng 10 tới 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
Input
Input

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 mcuser làm đối số dòng lệnh, script sẽ in ra thông báo cho biết mcuser không có quyền sudo. Ngược lại, nam là user hiện tại và có quyền sudo. Do đó, script sẽ xác nhận quyền hạn của nam 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' không tồn tại."

else

  echo "The file '$file_to_check' tồn tại."

fi
Input
Input

Giải thích:

Bash Script này bắt đầu bằng cách đặt tên cho một file là “auto_convert.log”. 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 auto_convert.log đã tồn tại trong thư mục hiện tại. Do đó, khi chạy script, kết quả trả về sẽ là “File ‘auto_convert.log’ tồn tại”.

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 "Chào mừng đến với Phần kiểm tra tư cách bỏ phiếu!"

read -p "Vui lòng nhập số tuổi: " age

read -p "Bạn có từng bị loại khỏi cuộc bỏ phiếu nào không? (có/không): " disqualifications

# Check if the user is old enough and not disqualified

if [ $age -ge 18 ] && [ "$disqualifications" != "có" ]; then

    echo "Chúc mừng! Bạn có thể bắt đầu tham gia bỏ phiếu."

else

    echo "Rất tiếc! Bạn chưa đủ điều kiện để tham gia."

fi
Input
Input

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 “Chúc mừng! Bạn có thể bắt đầu tham gia bỏ phiếu.” Nếu không, lệnh sẽ in ra “Rất tiếc! Bạn chưa đủ điều kiện để tham gia.”

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à 17 và trả lời “không” 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ả “Rất tiếc! Bạn chưa đủ điều kiện để tham gia.”.

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 "Vui lòng nhập username và password để tham gia cuộc họp"

# Set the correct username and password

correct_username="nam"

correct_password="1234"

# Prompt the user to enter their credentials

read -p "Nhập tài khoản: " username

read -s -p "Nhập mật khẩu: " password

# Check if the entered credentials are correct

if [ "$username" != "$correct_username" ] || [ "$password" != "$correct_password" ]; then

    echo -e "\nĐăng nhập thất bại. Vui lòng kiểm tra lại thông tin."

else

    echo -e "\nĐăng nhập thành công! Xin chào, $username."

fi
Input
Input

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à “nam” 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 “Đăng nhập thất bại. Vui lòng kiểm tra lại thông tin.”. Ngược lại, nếu cả hai đều chính xác, chương trình sẽ in ra thông báo “Đăng nhập thành công! Xin chào, $username.”.

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à “Đăng nhập thành công! Xin chào, nam”.

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

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

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

PHẦN CỨNG MẠNH MẼ

HỖ TRỢ 24/7

ĐĂNG KÝ NGAY
Pattern

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

Icon
ĐĂ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

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
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