Обзор
Команда 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`. Неправильное использование может привести к неожиданным результатам.