Проверка значений в условиях Bash. Как использовать команду test для сравнений?

проверка значений в условиях bash. как использовать команду test для сравнений?

Причины существования команды test

Прошлый урок раскрывал принципы использования условного оператора if/else в сценариях Bash. Очень важным моментом в построении условий является проверка входящих параметров. Нами были рассмотрены три типа таких проверок: одинарные квадратные, двойные квадратные и двойные круглые скобки. Каждый из этих типов имеет свои особенности. Если вы не знакомы с темой обсуждения, настоятельно рекомендуем изучить предыдущую статью.

В основе работы интерпретатора Bash лежит вызов команд. Проверка условия также является своего рода командой. Возврат успешного кода завершения «0» говорит об истинности результата, а в случае ошибки и получения кода «1» выражение считается ложным. Исторически первым инструментом проверки входящих значений в условиях стала команда test. Чуть позже в синтаксис Bash была добавлена конструкция одинарных квадратных скобок, что является псевдонимом команды test.

Заметка
Современные версии Bash имеют встроенные механизмы проверок условий с помощью двойных квадратных и круглых скобок. Они позволяют осуществлять математические операции, проверки строк и файлов. Такие конструкции имеют преимущество по скорости выполнения и более удобны.

Настоятельно рекомендуется использовать именно их. Данный урок раскрывает устаревшие подходы к написанию сценариев. Однако изучение такого материала необходимо. Так как это всё еще можно встретить в старых скриптах.

Проверка условий командой test

Команда test проста в использовании. В общем виде выражение можно записать как «if test имя_переменной оператор_сравнения значение; then набор_команд fi». При осуществлении сравнений допустимо использовать любые операторы: проверка файла на существование, сравнение строк, проверка прав директорий и т.п. С полным их списком вы можете ознакомиться в предыдущей статье.

#!/bin/bash

#два выражения, объединенных логическим "и"
if (test $[4*5] -gt 15) && (test -d '/var/log/apt'); then
    echo 'Условие истинно'
fi


#пример арифметической операции в условии
number=145
divider=3

if test $[$number/$divider] -gt 30; then
    echo "${number} деленное на ${divider} равно $[$number/$divider]"
fi

Последние публикации