Главная > Среда и утилиты > test

test: Оценка условных выражений

Команда test используется для построения условных операторов в скриптах оболочки. Она оценивает различные условные выражения, такие как проверка типа файла или сравнение строковых и числовых значений, и возвращает истину (0) или ложь (1). Это возвращаемое значение используется в управляющих структурах, таких как оператор `if`.

Обзор

Команда test оценивает заданное выражение и возвращает код завершения 0, если результат истинный, и 1, если ложный. Она в основном используется для условного выполнения в скриптах оболочки, таких как операторы `if` и `while`. Команда `[` является другой формой команды `test`, а `[[` предоставляет расширенные функции в Bash/Ksh/Zsh.

Основные функции

  • Проверка типов и атрибутов файлов
  • Сравнение строковых значений
  • Сравнение целочисленных значений
  • Логические операции (И, ИЛИ, НЕ)

Основные опции

Команда test использует различные унарные и бинарные операторы для оценки условных выражений.

Проверка атрибутов файла

Сравнение строк

Сравнение целых чисел

Логические операторы

Сгенерированная команда:

Комбинируйте команды.

Описание:

`test` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

Примеры оценки различных условных выражений с использованием команды test.

Проверка существования файла

if test -e /etc/passwd; then echo "Файл /etc/passwd существует."; fi

Проверяет, существует ли файл `/etc/passwd`.

Проверка, является ли директорией

if test -d /tmp; then echo "/tmp является директорией."; fi

Проверяет, является ли `/tmp` директорией.

Сравнение строк

MY_VAR="hello"
if test "$MY_VAR" = "hello"; then echo "Значение переменной равно hello."; fi

Проверяет, равна ли переменная `MY_VAR` строке 'hello'.

Сравнение целых чисел

COUNT=15
if test "$COUNT" -gt 10; then echo "COUNT больше 10."; fi

Проверяет, больше ли переменная `COUNT` значения 10.

Логическая операция И

touch file.txt
if test -f file.txt -a -s file.txt; then echo "Файл file.txt существует и не пуст."; fi
rm file.txt

Проверяет, существует ли файл `file.txt` и не пуст ли он.

Использование `[` вместо test

if [ -f /etc/hosts ]; then echo "Файл /etc/hosts существует."; fi

Команда `test` может быть заменена на `[`. В этом случае необходимо закрыть выражение с помощью `]`.

Советы и предостережения

Полезные советы и моменты, на которые стоит обратить внимание при использовании команды test.

Основные советы

  • Команда `[` идентична команде `test` и должна завершаться `]`. `[` и `]` обрабатываются как отдельные аргументы, поэтому пробелы обязательны.
  • Команда `[[` поддерживается только в Bash, Ksh, Zsh и предоставляет более мощные функции (регулярные выражения, обработка пробелов и т. д.). Внутри `[[` безопасно использовать переменные без кавычек.
  • При использовании переменных всегда рекомендуется заключать их в двойные кавычки (например, `test "$VAR" = "value"`). Это предотвращает ошибки, которые могут возникнуть, если переменная пуста или содержит пробелы.
  • Для сравнения целых чисел используйте `-eq`, `-ne`, `-gt`, `-lt`, `-ge`, `-le`, а для сравнения строк — `=`, `!=`, `-z`, `-n`. Неправильное использование может привести к неожиданным результатам.

Те же команды в категории