Поиск по сайту:

В чем разница между операторами Bash [[ vs [ vs (Vs ((


Bash предоставляет несколько операторов для сравнения значений, тестовых условий и выполнения математических операций. Эти операторы включают [[, [, ( и (() и часто могут сбивать с толку новых пользователей. Вот обзор различных операторов и их функций.

Двойные квадратные скобки [[ ]]

[[ и ]] используются для условных выражений в Bash. [[ — это расширенная версия одинарных квадратных скобок [] и используется для сопоставления с образцом, регулярных выражений и расширенных условных выражений. Оператор [[ более мощный, чем [, и во многих случаях предпочтительнее.

#!bin/bash

string=Linux

if [[ $string == "Linux" ]]; then

echo "The string is Linux"

fi

В следующем коде оператор двойных квадратных скобок используется для проверки того, равно ли значение переменной $string строке «linux»:

Одинарные квадратные скобки [ ]

[ и ] используются для условных выражений в Bash. Ее также называют командой «тест». Оператор одиночных квадратных скобок [ также используется для условных выражений, но имеет больше ограничений, чем [[. Это полезно для базовых сравнений и тестов, таких как проверка существования файла или пустой строки.

#!bin/bash

# Define the name of the file to check

file="/home/aaliyan/Documents/bashfile2.sh"

# Check if the file exists

if [ -f $file ]; then

echo "The file exists"

else

echo "The file does not exist"

fi

Этот скрипт проверяет, существует ли файл с именем «bashfile2.sh» в соответствующем каталоге, и если файл существует, он выводит на консоль сообщение «Файл существует», иначе он выводит «Файл не существует»:

Скобки ( )

Оператор скобок ( используется для запуска команд в среде подоболочки. Это означает, что любые изменения, внесенные в среду в скобках, не влияют на среду родительской оболочки.

#!bin/bash

# Change directory to /home/user/directory and list its contents

(cd /home/aaliyan/Documents && ls)

В следующем коде оператор скобок используется для изменения каталога на /home/aaliyan/Documents и запуска команды ls в подоболочке:

Двойные скобки (( ))

(( и )) используются для арифметической оценки и поддерживают более продвинутые функции, чем оператор с одинарными скобками (, такие как побитовые операции, ниже приведен пример сценария bash, демонстрирующий использование двойных скобок:

#!bin/bash

# Define the values of a, b, and c

a=7

b=9

c=2

# Check if the sum of a and b is greater than c

if (( $a + $b > $c )); then

echo "The sum of a and b is greater than c"

fi

В следующем коде оператор двойных скобок используется для проверки того, больше ли сумма переменных $a и $b значения переменной $c:

Чтобы лучше понять различия между этими операторами, я дал таблицу, которая может помочь вам написать более эффективный код bash и более эффективно использовать эти операторы bash:

Operator Purpose Example
[[ expression ]] Conditional expressions if [[ $string == “linux” ]]; then echo “The string is linux”
[ expression ] Basic Conditional expressions if [ -f $file ]; then echo “The file exists”
( command ) Run commands in a subshell environment (cd /home/user/directory && ls)
(( expression )) Arithmetic operations if (( $a + $b > $c )); then echo “The sum of a and b is greater than c”

Заключение

Операторы Bash [[ ]], [ ], ( ) и (( )) имеют различное использование и синтаксис. Оператор двойных квадратных скобок [[ ]] используется для сопоставления с образцом и сравнения строк, а оператор одинарных квадратных скобок [ ] используется для условных операторов и проверки файлов. Оператор круглых скобок ( ) используется для группировки команд, а оператор двойных круглых скобок (()) используется для арифметического вычисления. Важно использовать соответствующий оператор для поставленной задачи, чтобы ваши сценарии Bash были точными и эффективными.

Статьи по данной тематике: