Условные выражения Bash

В информатике условные операторы, условные выражения и условные конструкции представляют собой функции языка программирования, которые выполняют различные вычисления или действия в зависимости от того, истинно или ложно заданное программистом логическое условие.

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

Вот список самых популярных условных выражений Bash. Вам не обязательно запоминать их наизусть. Вы можете просто вернуться к этому списку, когда вам это понадобится!

Выражения файлов

  • Истина, если файл существует.

[[ -a ${file} ]]
  • Истинно, если файл существует и является специальным файлом блока.

[[ -b ${file} ]]
  • Истинно, если файл существует и является специальным символьным файлом.

[[ -c ${file} ]]
  • Истинно, если файл существует и является каталогом.

[[ -d ${file} ]]
  • Истина, если файл существует.

[[ -e ${file} ]]
  • Истинно, если файл существует и является обычным файлом.

[[ -f ${file} ]]
  • True, если файл существует и является символической ссылкой.

[[ -h ${file} ]]
  • True, если файл существует и доступен для чтения.

[[ -r ${file} ]]
  • Истинно, если файл существует и его размер больше нуля.

[[ -s ${file} ]]
  • True, если файл существует и доступен для записи.

[[ -w ${file} ]]
  • Истинно, если файл существует и является исполняемым.

[[ -x ${file} ]]
  • True, если файл существует и является символической ссылкой.

[[ -L ${file} ]]

Строковые выражения

  • Истинно, если переменная оболочки varname установлена ​​(присвоено значение).

[[ -v ${varname} ]]

Истинно, если длина строки равна нулю.

[[ -z ${string} ]]

Истинно, если длина строки не равна нулю.

[[ -n ${string} ]]
  • Истинно, если строки равны. =следует использовать с командой тестирования для проверки соответствия POSIX. При использовании с [[командой выполняется сопоставление с образцом, как описано выше (составные команды).

[[ ${string1} == ${string2} ]]
  • Истинно, если строки не равны.

[[ ${string1} != ${string2} ]]
  • Истинно, если строка1 сортируется перед строкой2 лексикографически.

[[ ${string1} < ${string2} ]]
  • Истинно, если строка1 сортируется после строки2 лексикографически.

[[ ${string1} > ${string2} ]]

Арифметические операторы

  • Возвращает true, если числа равны

[[ ${arg1} -eq ${arg2} ]]
  • Возвращает true, если числа не равны

[[ ${arg1} -ne ${arg2} ]]
  • Возвращает true, если arg1 меньше arg2

[[ ${arg1} -lt ${arg2} ]]
  • Возвращает true, если arg1 меньше или равен arg2 .

[[ ${arg1} -le ${arg2} ]]
  • Возвращает true, если arg1 больше arg2

[[ ${arg1} -gt ${arg2} ]]
  • Возвращает true, если arg1 больше или равен arg2.

[[ ${arg1} -ge ${arg2} ]]

Обратите внимание: arg1 и arg2 могут быть положительными или отрицательными целыми числами.

Как и в других языках программирования, вы можете использовать AND& ORусловия:

[[ test_case_1 ]] && [[ test_case_2 ]] # And
[[ test_case_1 ]] || [[ test_case_2 ]] # Or

Операторы статуса выхода

  • возвращает true, если команда прошла успешно и без ошибок

[[ $? -eq 0 ]]
  • возвращает true, если команда не выполнена успешно или содержит ошибки

[[ $? -gt 0 ]]

Last updated