English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Команда test в Shell

Команда test в Shell используется для проверки выполнения某个 условия, она может выполнять тесты числовых, символьных и файловых значений.

Тест числовых значений

Параметр Объяснение
-eq Равны, то это истина
-ne Не равны, то это истина
-gt Больше, то это истина
-ge Больше или равно, то это истина
-lt Меньше, то это истина
-le Меньше или равно, то это истина
num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo 'Два числа равны!'
else
    echo 'Два числа не равны!'
fi

Результат вывода:

Два числа равны!

В коде [] выполняются базовые арифметические операции, например:

#!/bin/bash
a=5
b=6
result=$[a+b] # Внимание: между знаками равенства не должно быть пробелов
echo "result равен: $result"

Результат: 

result равен: 11

Тест строки

Параметр Объяснение
= Равны, то это истина
!= Не равны, то это истина
-z строка Длина строки равна нулю, то это истина
-n строка Длина строки не равна нулю, то это истина
num1="ru1noob"
num2="w3codebox"
if test $num1 = $num2
then
    echo 'Два строки равны!'
else
    echo 'Два строки не равны!'
fi

Результат вывода:

Два строки не равны!

Тест файлов

Параметр Объяснение
-e имя_файла Истина, если файл существует
-r имя_файла Истина, если файл существует и является readable
-w имя_файла Истина, если файл существует и является writable
-x имя_файла Истина, если файл существует и является исполнимым
-s имя_файла Истина, если файл существует и содержит по крайней мере один символ
-d имя_файла Истина, если файл существует и является каталогом
-f имя_файла Истина, если файл существует и является обычным файлом
-c имя_файла Истина, если файл существует и является символьным специальным файлом
-b имя_файла Истина, если файл существует и является блочным специальным файлом
cd /bin
if test -e ./bash
then
    echo 'Файл существует!'
else
    echo 'Файл не существует!'
fi

Результат вывода:

Файл существует!

Кроме того, Shell предоставляет три логических оператора ( -a ), ( -o ) и ( ! ) для соединения тестовых условий, их приоритет: ! наивысший, -a следующий и -o низший. Например:

cd /bin
if test -e ./notFile -o -e ./bash
then
    echo 'По крайней мере один файл существует!'
else
    echo 'Два файла не существуют'
fi

Результат вывода:

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