Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách sử dụng “if… else” trong Bash Scripts (với các ví dụ)

Bash scripting là một công cụ quan trọng cho các nhà phát triển để tự động hóa các tác vụ trong Linux.

Tập lệnh Bash có thể được sử dụng để tự động hóa các nhiệm vụ phát triển cục bộ (như tải lên tệp để triển khai, biên dịch ứng dụng hoặc thay đổi kích thước hình ảnh hàng loạt), cũng như cho các tác vụ phía máy chủ (gửi email đã lên lịch, thu thập dữ liệu theo khoảng thời gian hoặc gửi thông báo đến thiết bị ).

Bạn sẽ muốn chạy một số nhiệm vụ phụ thuộc vào kết quả của một nhiệm vụ hoặc biến khác và đó là nơi nếu… khác sẽ giúp bạn. Quá trình ra quyết định này trong tập lệnh Bash được gọi là sử dụng các điều kiện .

Hướng dẫn này sẽ cung cấp chi tiết và cách sử dụng ví dụ cho if… else các câu lệnh bằng Bash.

Sử dụng The if Tuyên bố

Một câu lệnh if đơn giản sẽ thực thi các hành động chứa của nó nếu các điều kiện là đúng và trông như sau:

if CONDITIONS; then
    ACTIONS
fi

Một ví dụ đầy đủ:

#!/bin/bash
if [ 2 -lt 3 ]; then
    echo "2 is less than 3!"
fi

Lưu ý rằng:

  • Tất cả các tập lệnh bash đều bắt đầu bằng dòng #! / bin / bash
  • -lt toán tử kiểm tra nếu giá trị đầu tiên nhỏ hơn giá trị thứ hai. Nếu chúng tôi muốn kiểm tra xem giá trị thứ hai có lớn hơn giá trị đầu tiên hay không, chúng tôi sẽ sử dụng -gt
  • Đọc tiếp để biết danh sách các toán tử logic hơn.
  • Chúng tôi đang sử dụng echo lệnh xuất văn bản ra dòng lệnh
  • nếu câu lệnh luôn kết thúc bằng fi để chấm dứt chúng

Sử dụng The else Tuyên bố

Nếu bạn muốn thực hiện một hành động dựa trên một tập hợp các điều kiện và sau đó một hành động khác CHỈ nếu các điều kiện đó không thành công, bạn có thể sử dụng else tuyên bố:

#!/bin/bash
echo -n "Enter number: "
read number
if [ $number -lt 3 ]; then
    echo "$number is less than 3!"
else
    echo "$number is not less than 3!"
fi

Lưu ý rằng:

  • Chúng tôi vẫn đang sử dụng các phần tử tương tự như trên để so sánh các giá trị và xuất văn bản
  • Chúng tôi đang sử dụng tính năng đọc lệnh để nhận thông tin đầu vào của người dùng
  • Chúng tôi đang sử dụng một biến để lưu trữ một giá trị để sử dụng sau này

Sử dụng elif (Khác If) Tuyên bố

Để kiểm tra nhiều nhóm điều kiện và thực hiện các hành động khác nhau nếu mỗi thử nghiệm là đúng, hãy sử dụng elif (else if) câu lệnh:

#!/bin/bash
echo -n "Enter number: "
read number
if [ $number -lt 3 ]; then
    echo "$number is less than 3!"
elif [ $number -eq 3]; then
    echo "$number is equal to 3!"
else
    echo "$number is not less than 3!"
fi

Nhiều điều kiện trong nếu Tuyên bố

Nếu bạn muốn kiểm tra nhiều điều kiện, bạn có thể sử dụng && ( ) và || ( HOẶC ) toán tử để quyết định xem có nên thực hiện các hành động hay không

#!/bin/bash
echo -n "Enter number: "
read number
if [[ $number -lt 3 ]] && [[ $number -lt 0 ]]; then
    echo "$number is less than three and is negative"
elif [[ $number -lt 3 ]] || [[ $number -gt 6 ]]; then
    echo "$number is not negative, but is less than 3 or greater than 6"
else
    echo "$number is greater than3 and less than 6"
fi

Tổ hợp câu lệnh

Bạn có thể đặt nếu các câu lệnh bên trong if khác tuyên bố:

#!/bin/bash
echo -n "Enter number: "
read number
if [$number -gt 3]; then
    echo "$number is greater than 3"
    if [$number -gt 6]; then
        echo "$number is also greater than 6"
    else
        echo "$number is not also greater than 6"
    fi
fi

Toán tử so sánh

Trong các ví dụ ở trên, chúng tôi đã sử dụng -lt (nhỏ hơn), -gt (lớn hơn) và = (bằng) toán tử. Dưới đây là một số toán tử logic thường được sử dụng khác:

So sánh các số

$number1 -eq $number2 : Returns true if the variables are equal
$number1 -gt $number2 : Returns true if $number1 is greater than $number2
$number1 -ge $number2 : Returns true if $number1 is equal to or greater than $number2
$number1 -lt $number2 : Returns true if $number1 is less than $number2
$number1 -le $number2 : Returns true if $number1 is equal to or less than $number2

So sánh các chuỗi

$string1 = $string2 : Returns true if $string1 and $string2 are equal
$string1 != $string2 : Returns true if $string1 and $string2 are not equal

Như được hiển thị ở trên, để đảo ngược kết quả của một biểu thức so sánh, hãy đặt ! (NOT) phía trước nó, ví dụ, *! =Có nghĩa là KHÔNG PHẢI.

Khi so sánh các chuỗi, hãy luôn đặt chúng trong dấu ngoặc kép để mọi dấu cách không bị bạn hiểu sai tập lệnh bash.

Bạn cũng nên đặt các biến có chứa chuỗi trong dấu ngoặc kép để đảm bảo chúng không bị hiểu sai:

#!/bin/bash
echo -n "Enter string: "
read string
if ["$string" = "hello there!"]
    echo "You said hello there!"
fi

Kiểm tra trạng thái của tệp hoặc thư mục

-d $filepath : Returns true if the $filepath exists and is a directory
-e $filepath : Returns true if the $filepath exists regardless of whether it's a file or directory
-f $filepath : Returns true if the $filepath exists and is a file
-h $filepath : Returns true if the $filepath exists and is a symbolic link
-r $filepath : Returns true if the $filepath exists and is readable
-w $filepath : Returns true if the $filepath exists and is writable
-x $filepath : Returns true if the $filepath exists and is executable

Kết luận

Tạo tập lệnh Bash của riêng bạn có thể giúp bạn tiết kiệm rất nhiều thời gian và viết khá đơn giản khi bạn biết các khối xây dựng cơ bản.

nếu… khác các câu lệnh cho phép bạn kiểm soát cách tập lệnh của bạn phản hồi với đầu vào của người dùng hoặc trạng thái của tệp.

Xem các bài viết Bash khác của chúng tôi để tìm hiểu thêm !