Выражения для проверки строк
В табл. 27.2 перечислены выражения, используемые для проверки строк.
Таблица 27.2. Выражения для проверки строк
Выражение
Истинно, если...
строка
Cтрока не пустая
-n строка
Длина строки больше нуля
-z строка
Длина строки равна нулю
строка1 = строка2
строка1 == строка2
строка1 и строка2 равны. Допускается использовать один или два знака «равно», но предпочтительнее два
строка1 != строка2
строка1 и строка2 не равны
строка1 > строка2
строка1 больше, чем строка2, в смысле алфавитной сортировки
строка1 < строка2
строка1 меньше, чем строка2, в смысле алфавитной сортировки
ВНИМАНИЕ
При использовании с командой test операторы > и < необходимо заключать в кавычки (или экранировать символом обратного слеша). Если этого не сделать, они будут интерпретироваться командной оболочкой как операторы перенаправления, что может привести к плачевным результатам. Обратите также внимание: в документации к командной оболочке bash утверждается, что порядок сортировки соответствует порядку алфавитной сортировки, определяемому текущими региональными настройками, но в действительности это не так. В версиях bash, вплоть до 4.0, используется порядок сортировки ASCII (POSIX).
Следующий сценарий демонстрирует применение выражений для проверки строк:
#!/bin/bash
# test-string: проверка значения строки
ANSWER=maybe
if [ -z "$ANSWER" ]; then
echo "There is no answer." >&2
exit 1
fi
if [ "$ANSWER" == "yes" ]; then
echo "The answer is YES."
elif [ "$ANSWER" == "no" ]; then
echo "The answer is NO."
elif [ "$ANSWER" == "maybe" ]; then
echo "The answer is MAYBE."
else
echo "The answer is UNKNOWN."
fi
В этом сценарии определяется константа ANSWER. Сначала сценарий проверяет, не является ли строка пустой. Если строка пустая, сценарий завершается с кодом 1. Обратите внимание на оператор перенаправления в команде echo. Он перенаправляет сообщение об ошибке «There is no answer» («Нет ответа») в стандартный вывод ошибок как «наиболее подходящий» для сообщений об ошибках. Если строка не пустая, сценарий сравнивает ее значение со строками «yes», «no» или «maybe». Проверки выполняются с использованием инструкции elif, которая является краткой формой записи для else if. Инструкция elif позволяет конструировать более сложные логические проверки.