WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Команда test ("[ ]")

Команда test ("[ ]")


Дата публикации: 17-03-2013

Команда test проверяет выполнение некоторого условия. С использованием этой (встроенной) команды формируются операторы выбора и цикла языка shell.

Два возможных формата команды:

test условие
или

[ условие ]
мы будем пользоваться вторым вариантом, т.е. вместо того, чтобы писать перед условием слово "test", будем заключать условие в скобки, что более привычно для программистов.

На самом деле shell будет распознавать эту команду по открывающей скобке "[", как слову(!), соответсвующему команде "test". Уже этого достаточно, чтобы предупредить о распространенной ошибке начинающих: Между скобками и содержащимся в них условием обязательно должны быть пробелы.

Пробелы должны быть и между значениями и символом сравнения или операции (как, кстати, и в команде "expr"). Не путать с противоположным требованием для присваивания значений переменным.

В shell используются условия различных "типов".

УСЛОВИЯ ПРОВЕРКИ ФАЙЛОВ:

-f file - файл "file" является обычным файлом;
-d file - файл "file" - каталог;
-с file - файл "file" - специальный файл;
-r file - имеется разрешение на чтение файла "file";
-w file - имеется разрешение на запись в файл "file";
-s file - файл "file" не пустой.

Примеры. Вводя с клавиатуры командные строки в первом случае получим подтверждение (код завершения "0"), а во втором - опровержение (код завершения "1"). "specific" - имя существующего файла.

[ -f specific ] ; echo $?
0

[ -d specific ] ; echo $?
1
УСЛОВИЯ ПРОВЕРКИ СТРОК:

str1 = str2 - строки "str1" и "str2" совпадают;
str1 != str2 - строки "str1" и "str2" не совпадают;
-n str1 - строка "str1" существует (непустая);
-z str1 строка "str1" не существует (пустая).

Примеры.

x="who is who"; export x; [ "who is who" = "$x" ]; echo $?
0

x=abc ; export x ; [ abc = "$x" ] ; echo $?
0

x=abc ; export x ; [ -n "$x" ] ; echo $?
0

x="" ; export x ; [ -n "$x" ] ; echo $?
1
ВАЖНОЕ ЗАМЕЧАНИЕ. Команда "test" дает значение "истина" (т.е. код завершения "0") и просто если в скобках стоит непустое слово.

[ privet ] ; echo $?
0

[ ] ; echo $?
1
Кроме того, существуют два стандартных значения условия, которые могут использоваться вместо условия (для этого не нужны скобки).

true ; echo $?
0

false ; echo $?
1
УСЛОВИЯ СРАВНЕНИЯ ЦЕЛЫХ ЧИСЕЛ:

x -eq y - "x" равно "y",
x -ne y - "x" неравно "y",
x -gt y - "x" больше "y",
x -ge y - "x" больше или равно "y",
x -lt y - "x" меньше "y",
x -le y - "x" меньше или равно "y".

То есть в данном случае команда "test" воспринимает строки символов как целые (!) числа. Поэтому во всех остальных случаях "нулевому" значению соответствует пустая строка. В данном же случае, если надо обнулить переменную, скажем, "x", то это достигается присваиванием "x=0".

Примеры.

x=abc ; export x ; [ abc -eq "$x" ] ; echo $?
"[": integer expression expected before -eq

x=321 ; export x ; [ 321 -eq "$x" ] ; echo $?
0

x=3.21 ; export x ; [ 3.21 -eq "$x" ] ; echo $?
"[": integer expression expected before -eq

x=321 ; export x ; [ 123 -lt "$x" ] ; echo $?
0
СЛОЖНЫЕ УСЛОВИЯ:

Реализуются с помощью типовых логических операций:

! - (not) инвертирует значение кода завершения.
-o - (or) соответсвует логическому "ИЛИ".
-a - (and) соответсвует логическому "И".

ПРЕДУПРЕЖДЕНИЕ. Не забывайте о пробелах.

Примеры.

[ ! privet ] ; echo $?
1

x=privet; export x; [ "$x" -a -f specific ] ; echo $?
0

x="";export x; [ "$x" -a -f specific ] ; echo $?
1

x="";export x; [ "$x" -a -f specific -o privet ] ; echo $?
0

x="";export x; [ "$x" -a -f specific -o ! privet ] ; echo $?
1
СОВЕТ. Не злоупотреблять сложными условиями.

 

 

 

 

 Летом, вопрос излишней температуры воздуха становится очень актуальным. Жара может стать помехой и снизить комфорт жизни и работы, самым лучшем выходом станет Установка кондиционера. Необходимо выбрать правильную модель, которая идеально подойдет для того типа помещений, охлаждать воздух в которых она будет. Слишком мощные кондиционеры будет неэкономичны, а слишком слабые не дадут нужного результата.

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Оноре де Бальзак:

"Тот, кто ищет миллионы, весьма редко их находит, но зато тот, кто не ищет, не находит их никогда."

Опрос

Какой браузер Вы используете?

Internet Explorer
Google Chrome
Mozilla Firefox
Netscape Navigator
Maxthon Browser
Opera
Mozilla Suite
SeaMonkey
K-Meleon
Safari
Amaya
Avant Browser
SlimBrowser
Другой...