Giảm 50% tất cả các gói, có thời hạn. Khởi điểm từ $2.48/mo
Còn 10 phút
Máy chủ và OS

Bash If Statement: cú pháp, biến thể, use case, lệnh, và hơn thế nữa!

Pius Bodenmann By Pius Bodenmann 10 phút đọc Cập nhật 28 tháng 1, 2024
lập trình bash

Trong shell scripting, các câu lệnh if Bash đóng vai trò quan trọng bằng cách cho phép lập trình viên tạo các đường dẫn thực thi có điều kiện dựa trên các tình huống khác nhau. Về cơ bản, các câu lệnh if cho phép chúng ta đưa ra quyết định trong script Bash, xem xét những yếu tố như kết quả kiểm tra, đầu vào từ người dùng hoặc trạng thái hệ thống. Nó giống như một cách để điều hướng qua các khả năng khác nhau.

Khi sử dụng shell scripting, một câu lệnh if theo một cấu trúc cụ thể. Nó thường bắt đầu với từ khóa "if", theo sau là điều kiện cần đánh giá, từ khóa "thì", và một hoặc nhiều lệnh sẽ thực thi nếu điều kiện đó đúng.

Để làm cho mọi thứ linh hoạt hơn, câu lệnh if cũng có thể bao gồm một câu lệnh "elif" (else if) tùy chọn, nhập vào khi điều kiện ban đầu không đúng. Nó cho phép chúng ta kiểm tra một điều kiện bổ sung và tiến hành tương ứng. Ngoài ra, câu lệnh if có thể có một câu lệnh "else" tùy chọn, nó thực thi nếu không có điều kiện nào là đúng.

Bằng cách kết hợp các câu lệnh if với các lệnh Bash khác và các tính năng của shell scripting, lập trình viên có thể tạo ra những script nâng cao có khả năng tự động hóa các tác vụ và quy trình phức tạp. Hãy ở lại để khám phá thêm về câu lệnh if Bash, bao gồm cú pháp, trường hợp sử dụng và các ví dụ!

Cú pháp Bash If Statement

Cú pháp Bash là tập hợp các quy tắc chi phối cấu trúc và ngữ pháp của các lệnh và tập lệnh viết bằng ngôn ngữ shell Bash. Cú pháp Bash bao gồm nhiều cấu trúc và phần tử khác nhau, chẳng hạn như:

  • Lệnh: Đây là các chương trình thực thi riêng lẻ hoặc các chức năng dựng sẵn của shell được dùng để thực hiện các nhiệm vụ cụ thể. Phần lớn thời gian làm việc với lập trình Bash, bạn sẽ dành cho những dòng lệnh này.
  • Đối số: Đây là các giá trị được truyền tới lệnh để chỉ định tùy chọn, tham số hoặc dữ liệu đầu vào. Hãy coi chúng như những điều kiện được đặt cho một lệnh để chỉ định các tham số thực thi của nó.
  • Biến: Đây là các ký hiệu đại diện cho các giá trị có thể được gán, thao tác hoặc sử dụng trong biểu thức. Chúng thường được dùng để xác định các giá trị mà cả lệnh và đối số phải xử lý.
  • Chuyển hướng: Đây là quá trình chuyển hướng đầu vào, đầu ra hoặc lỗi tới hoặc từ các tập tin, thiết bị hoặc lệnh khác. Nếu không có chúng, các lệnh của bạn có khả năng cao sẽ hướng tới đích sai và làm hỏng code.
  • Ống dẫn: Đây là cơ chế kết nối đầu ra của một lệnh với đầu vào của lệnh khác. Chúng thường được dùng để thực hiện các dòng lệnh có điều kiện nâng cao trong các chương trình lớn và tạo ra các dòng lệnh phức tạp.
  • Cấu trúc điều khiển: Đây là các cấu trúc kiểm soát luồng thực thi các lệnh, chẳng hạn như vòng lặp, điều kiện và hàm. Hiểu rõ cấu trúc điều khiển là chìa khóa để viết các dòng lệnh sáng tạo và nâng cao độ sâu của code.
  • Bình luận: Đây là các chú thích được shell bỏ qua và dùng để ghi chú code hoặc cung cấp giải thích. Chúng là những điểm tham chiếu quan trọng khi phân tích và gỡ lỗi, đặc biệt là trong các dự án nhóm.

Cú pháp Bash phải được viết chính xác để shell có thể giải thích và thực thi lệnh. Lỗi cú pháp có thể khiến shell phát sinh thông báo lỗi hoặc hành vi không mong muốn.

Dưới đây là lệnh if trong Bash hoạt động như thế nào:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

Trong trường hợp này, "điều kiện" ám chỉ một bài kiểm tra cho ra kết quả là đúng hoặc sai. Khi điều kiện là đúng, các lệnh tiếp theo được chỉ định sau từ khóa "then" sẽ được thực thi. Bây giờ, giả sử chúng ta muốn đánh giá một điều kiện bổ sung khác. Chúng ta có thể sử dụng từ khóa "elif" để làm điều này. Nó cung cấp một cách để xem xét một khả năng khác. Bây giờ, nếu không có điều kiện nào thỏa mãn, các lệnh được chỉ định sau từ khóa "else" sẽ được áp dụng. Nó như một kế hoạch dự phòng. Cuối cùng, để chỉ ra kết thúc của lệnh if, chúng ta sử dụng từ khóa "fi".

Bash Statements hoạt động như thế nào?

Khi nói đến lập trình Bash, lệnh if trở nên rất hữu ích trong việc hướng dẫn luồng của tập lệnh dựa trên kết quả của một bài kiểm tra điều kiện. Mục đích của nó là đánh giá một điều kiện và, nếu nó là đúng, thực thi một tập hợp lệnh cụ thể.

Bây giờ, hãy xem cách mọi thứ thường diễn ra khi một lệnh if xuất hiện trong tập lệnh Bash. Tập lệnh sẽ dành một chút thời gian để đánh giá điều kiện được đề cập trong lệnh if. Nếu điều kiện là đúng, các lệnh trong khối "then" sẽ được thực thi.

Tuy nhiên, nếu điều kiện là sai, tập lệnh sẽ tiếp tục đánh giá các điều kiện elif bổ sung. Nếu bất kỳ điều kiện nào trong số này là đúng, các lệnh trong khối elif tương ứng sẽ được thực thi. Trong các trường hợp mà không có điều kiện nào được chỉ định trong các lệnh if và elif là đúng, tập lệnh sẽ nhận ra điều này và tiếp tục thực thi các lệnh được chỉ định trong khối else (nếu có khối else).

Về cơ bản, lệnh if là một phương tiện để hỗ trợ việc ra quyết định trong tập lệnh, cho phép nó đi qua các đường thực thi khác nhau tùy thuộc vào kết quả của bài kiểm tra. Bài kiểm tra này có thể xem xét nhiều yếu tố khác nhau, chẳng hạn như kết quả của một lệnh hoặc giá trị được gán cho một biến.

Ví dụ về Bash If Statement

Bây giờ hãy bỏ qua lý thuyết cơ bản và xem cách sử dụng lệnh if trong Bash khi phát triển code thực tế. Dưới đây là một ví dụ minh họa cách lệnh if hoạt động:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

Trong ví dụ này, lệnh if đánh giá giá trị của biến x. Nếu x lớn hơn 4, tập lệnh sẽ thực thi lệnh in ra "x greater than 4". Nếu x nhỏ hơn hoặc bằng 4, tập lệnh sẽ thực thi lệnh in ra "x less than or equal to 4".

Giờ bạn đã có một sự hiểu biết vững chắc về lệnh If cơ bản trong Bash và cách nó hoạt động, hãy đi sâu hơn vào các biến thể và các lệnh liên quan và tìm hiểu thêm về Lệnh If Cơ Bản, Lệnh If Lồng Nhau, If Else, If Elif Else và Lệnh Case lần lượt.

Các câu lệnh If cơ bản

Hãy bắt đầu với lệnh if cơ bản trong Bash. Lệnh if kiểm tra xem một điều kiện có đúng hay không và thực thi một khối code liên quan tương ứng. Dưới đây là cú pháp:

if [ condition ]
then
  commands
fi

Trong trường hợp này, tập lệnh sẽ đánh giá điều kiện, và nếu nó là đúng, các lệnh được chỉ định sẽ được thực thi. Nếu điều kiện là sai, tập lệnh sẽ chuyển sang lệnh tiếp theo mà không thực thi khối bên trong phần "then".

Câu lệnh If lồng nhau

Lệnh if lồng nhau, như cái tên gợi ý, là một lệnh if "lồng" bên trong một lệnh if khác. Cấu trúc lồng này cho phép thực hiện các bài kiểm tra và phân tích phức tạp hơn trong tập lệnh. Dưới đây là một ví dụ về lệnh if lồng nhau:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Bạn có thể thấy trong các lệnh rằng tập lệnh đánh giá condition1 trước tiên. Nếu condition1 được xác minh là đúng, nó sẽ đánh giá condition2. Nếu condition2 cũng đúng, tập lệnh sẽ thực thi các lệnh cần thiết.

Lệnh Bash If Else

Lệnh Bash if else cho phép bạn đưa ra quyết định trong tập lệnh dựa trên việc một điều kiện là đúng hay sai, cho phép thực thi mã phức tạp hơn. Đây là cách cấu trúc trông như thế nào:

if [ condition ]
then
  commands1
else
  commands2
fi

Cấu trúc này đảm bảo rằng nếu điều kiện được thỏa mãn, tập lệnh của bạn sẽ nhanh chóng thực thi "commands1". Tuy nhiên, nếu điều kiện là sai, nó sẽ chuyển sang thực thi "commands2".

Lệnh If Elif Else

Đôi khi, bạn cần xem xét nhiều điều kiện và kết quả tương ứng của chúng. Lệnh if elif else cho phép bạn làm chính xác điều đó. Hãy quan sát cú pháp sau:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Ở đây, tập lệnh của bạn đánh giá condition1 trước tiên. Nếu nó được xác minh là đúng, nó sẽ nhanh chóng thực thi commands1. Tuy nhiên, nếu condition1 là sai, tập lệnh của bạn tiếp tục đánh giá condition2. Nếu condition2 là đúng, nó tiến hành thực thi commands2. Và nếu cả condition1 và condition2 đều là sai, tập lệnh của bạn sẽ thực thi phương án thay thế, đó là thực thi commands3.

Câu lệnh Case

Trong Bash, bạn có lệnh case, hoạt động tương tự như lệnh switch được tìm thấy trong các ngôn ngữ lập trình khác. Nó cung cấp một cách để thực thi các bộ lệnh khác nhau dựa trên giá trị của một biến. Hãy xem cấu trúc:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Ở đây, tập lệnh đánh giá biểu thức variable và so sánh nó với các mẫu khác nhau. Khi tìm thấy kết quả phù hợp, bộ lệnh tương ứng được thực thi. Tuy nhiên, nếu không tìm thấy kết quả phù hợp, các lệnh mặc định sẽ được thực thi một cách mượt mà. Mẫu dấu hoa thị (*) hoạt động như một ký tự đại diện, khớp với bất kỳ thứ gì chưa được đề cập.

Các Toán tử Logic Bash

Một phần lớn khác trong cách hoạt động của lệnh Bash if là Toán tử Logic. Các toán tử này cho phép bạn kết hợp nhiều điều kiện, cho phép bạn đưa ra quyết định dựa trên tính đúng sai của các điều kiện kết hợp này. Bash kết hợp ba toán tử logic chính để sử dụng trong các lệnh if. Dưới đây là các ví dụ về ba loại lệnh toán tử logic chính.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logical or (||) hoặc logic (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Không bằng:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Kết luận

Trong bài viết này, chúng tôi cung cấp hướng dẫn giới thiệu về các lệnh Bash if và cách sử dụng chúng. Chúng tôi cũng thảo luận về cách chúng có thể làm cho mã của bạn gọn gàng hơn và chức năng hơn. Bằng cách sử dụng hiệu quả các lệnh điều kiện này, bạn có thể tạo các tập lệnh mạnh mẽ có khả năng xử lý các tác vụ phức tạp và ra quyết định.

Bạn mới tiếp xúc với thế giới Linux? Hãy để chúng tôi là ngọn đèn dẫn đường trên hành trình thú vị này! Của chúng tôi Linux VPS là điểm khởi đầu hoàn hảo cho người mới bắt đầu, mang lại sự đơn giản mà không hy sinh sức mạnh. Với giao diện thân thiện người dùng và hỗ trợ từ các chuyên gia, bạn sẽ thấy dễ dàng hơn bao giờ hết để khai thác các khả năng của máy chủ Linux. Cho dù bạn đang thiết lập một trang web, kiểm tra ứng dụng hay khám phá thế giới rộng lớn của Linux, Linux VPS của chúng tôi cung cấp một môi trường an toàn và không rắc rối. Bước đi đầu tiên vào vũ trụ Linux với sự tự tin, hãy xem qua các tùy chọn Linux VPS của chúng tôi ngay hôm nay và bắt đầu cuộc phiêu lưu Linux của bạn!

Linux VPS Hosting

Hãy tự lấy cho mình một Linux VPS tiết kiệm hoặc cao cấp để host website hoặc remote desktop, với giá rẻ nhất hiện có. VPS chạy trên Linux KVM để tăng hiệu quả và hoạt động trên phần cứng mạnh với lưu trữ NVMe SSD để tăng tốc độ.

Đọc thêm

Câu hỏi thường gặp

Tôi có thể sử dụng các toán tử logic trong các lệnh Bash if không?

Có, bạn có thể sử dụng các toán tử logic chẳng hạn như '||' trong các lệnh Bash if. Ví dụ, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … sẽ thực thi khối mã nếu $var lớn hơn 0 và nhỏ hơn 10.

Tôi có thể sử dụng nhiều điều kiện trong một lệnh if duy nhất không?

Có, bạn có thể sử dụng nhiều điều kiện trong một lệnh if duy nhất bằng cách sử dụng các toán tử logic chẳng hạn như -a (AND) hoặc -o (HOẶC) để kết hợp chúng. Ví dụ, if [ $var -gt 0 -a $var -lt 10 ]; then … sẽ thực thi khối mã nếu $var lớn hơn 0 VÀ nhỏ hơn 10.

Tôi có thể sử dụng command substitution trong câu lệnh if của Bash không?

Có, bạn có thể sử dụng command substitution trong câu lệnh if của Bash bằng cách đặt lệnh trong $() hoặc backticks (). Ví dụ, if [ $(whoami) == "root" ]; then … sẽ thực thi khối mã nếu người dùng hiện tại là root.

[[ vs [ vs ( vs ((: Sự khác biệt giữa các toán tử Bash này là gì?

Tóm lại, [[ được dùng cho kiểm tra điều kiện nâng cao. [ được dùng cho kiểm tra điều kiện cơ bản. ( được dùng cho nhóm subshell và thực thi lệnh. (( được dùng cho các phép toán số học.

 

Chia sẻ

Thêm bài viết từ blog

Tiếp tục đọc.

Ảnh bìa Best Self-Hosted Apps You Can Run with Cosmos Cloud với các panel ứng dụng quanh một dashboard Cosmos.
Máy chủ và OS

Các ứng dụng self-hosted tốt nhất bạn có thể chạy với Cosmos Cloud: File, Media, Mật khẩu, Tự động hóa, và nhiều hơn nữa!

Có thể bạn đã cài đặt Cosmos Cloud và giờ muốn xem ứng dụng nào phù hợp với nó, hoặc có thể bạn chưa quyết định dùng Cosmos và chỉ muốn xem nó phù hợp với quy trình làm việc của mình thế nào

Nick SilverNick Silver 16 phút đọc
Ảnh bìa Portainer vs Cosmos Cloud for Managing Docker Apps với sơ đồ cài đặt hybrid và các khối ops vs access neon.
Máy chủ và OS

Portainer vs Cosmos Cloud: Lựa chọn tốt nhất để quản lý ứng dụng Docker

Nếu bạn đã biết Docker và chỉ muốn cách gọn gàng hơn để chạy một stack ứng dụng đang lớn dần, đây là câu trả lời ngắn cho Portainer vs Cosmos Cloud. Portainer là lựa chọn mạnh hơn cho việc trực tiếp

Nick SilverNick Silver 14 phút đọc
Hình ảnh đặc trưng Cosmos Cloud vs CasaOS vs Umbrel cho thấy ba con đường self-hosted bên trong một thế giới mạng cloud trừu tượng.
Máy chủ và OS

Cosmos Cloud vs CasaOS vs Umbrel: Nền tảng self-hosted nào phù hợp với cài đặt của bạn?

Câu trả lời ngắn là CasaOS vẫn là nơi dễ bắt đầu nhất, Umbrel có cảm giác được tuyển chọn gọn gàng nhất, và Cosmos Cloud có ý nghĩa hơn khi bạn muốn kiểm soát chặt hơn domain

Nick SilverNick Silver 11 phút đọc

Sẵn sàng triển khai? Từ $2.48/tháng.

Cloud độc lập, từ 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.