Программирование на Shell (Unix)


ПРОГРАММНЫЕ СТРУКТУРЫ - часть 2


/p>

Примеры. Вводя с клавиатуры командные строки в первом случае получим подтверждение (код завершения "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




Начало  Назад  Вперед



Книжный магазин