Условные выражения 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