Выражения для проверки строк

We use cookies. Read the Privacy and Cookie Policy

В табл. 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 позволяет конструировать более сложные логические проверки.