Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

<p><strong>17.4. Проверка чисел</strong></p>

Для сравнения чисел можно воспользоваться операторами другого рода. Общий формат:

"число" числовой_оператор "число" или

[ "число" числовой_оператор "число" ]

где в качестве выражения числовой_оператор могут фигурировать следующие операторы:

-eqДва числа равны
-neДва числа не равны
-gtПервое число больше второго числа
-ltПервое число меньше второго числа
-leПервое число меньше или равно второму числу
-gtПервое число больше или равно второму числу

Выясним, равно ли одно число другому (в данном случае рассматривается, равно ли число 130 числу 130):

$ NUMBER=130

$ [ "$NUMBER" -eq "130" ]

$ echo $?

0

Превосходно! Результатом сравнения явилось значение "истина". Теперь изменим второе число и проверим, отобразится ли сообщение об ошибке. Возвращается значение 1 (130 не равно 100(.

$ [ "$NUMBER" —eq "100" ] $ echo $?

1

Чтобы проверить, является ли число 130 больше числа 100, воспользуйтесь следующей командой:

$ [ "$NUMBER" —gt "100" ]

$ echo $?

0

Ответ утвердительный.

Так же можно проверять два целых значения переменных. Ниже уточняется, будет ли значение переменной DEST_COUNT большим, чем значение переменной SOURCE_COUNT.

$ SOURCE_COUNT=13

$ DEST_COUNT-15

$ [ "$DEST_COUHT" -gt "$SOURCE_COUNT" ]

$ echo $?

0

Необязательно для выполнения проверки обращаться к переменной: можно сравнивать и числа, но в этом случае следует применять кавычки:

$ [ "990" -le "995" ] $ echo $?

0

Можно также комбинировать и тестировать выражения с помощью логических операторов. При этом следует пользоваться только одной парой квадратных скобок — не применяйте две пары скобок. Если не учитывать этого замечания, отобразится сообщение об ошибке — "too many arguments" (слишком много аргументов):

$ [ "990" -le "995" ] —а [ "123" —gt "33" ]

sh:[: too many arguments

В следующем примере проверяются два выражения. Если оба выражения истинны, результат будет истинным. Ниже приводится корректный метод выполнения проверки.

$ [ "990" -le "995" -a "123" -gt "33" ] $ echo $?

0

<p><strong>17.5. Применение команды expr</strong></p>

Команда expr используется в основном для проверки целочисленных значений, но может применяться также и при обработке строк. Общий формат команды expr:

expr аргумент оператор аргумент

Команду expr удобно использовать для подсчета количества строк:

$ expr 10 + 10

20

$ expr 900 + 600

1500

$ expr 30/3

10

$ expr 30/3/2

5

В случае применения знака умножения, можно с помощью обратной косой черты отменить его значение- Если этого не сделать, интерпретатор команд может неверно определить значение символа *:

$ expr 30 \*.3

90

<p><emphasis><strong>17.5.1. Приращение переменной цикла</strong></emphasis></p>

Команда expr выполняет приращение переменной цикла. Сначала переменной цикла присваивается начальное значение нуль. Затем добавляется единица. Кавычки применяются для обозначения подстановки команд. Выводимые данные, полученные с помощью команды expr, присваиваются переменной цикла.

$ loop=0

$ LOOP=`expr $LOOP + 1`

<p><emphasis><strong>17.5.2. Проверка численных значений</strong></emphasis></p>

Команду expr можно применять для выполнения сравнений чисел. Если вычисления выполняются с числами, отличными от целых, отображается сообщение об ошибке, например:

$ expr rr + 1

expr: нечисловой аргумент

Итак, необходимо передать значение переменной (не важно, какой именно), выполнить любую арифметическую операцию и направить выводимые данные в /dev/null. Затем достаточно проверить код завершения последней команды. Если код равен нулю, тогда мы имеем дело с числом; любое другое значение свидетельствует о том, что данное значение не является числом.

$ VALUE=12

$ expr $VALUE + 10 > /dev/null 2>&1

$ echo $?

0

Это — число.

$ VALUE=hello

$ expr $VALUE + 10 > /dev/null 2>&1

$ echo $?

2

А это — не численное значение.

Перейти на страницу:

Похожие книги

112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)
112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)

  По Парижу приятно гулять, бесцельно бродить, кружить по узким улочкам, отдыхать в маленьких кафе и в парках у фонтанов. Здесь есть все для любителей архитектуры, ценителей живописи, театралов, меломанов, гурманов, поклонников всевозможных развлечений. Париж притягивает, удивляет, очаровывает, постепенно приоткрывая тайны любознательному гостю, который теряется от сложности выбора: что же увидеть прямо сейчас, а что отложить на потом. Мои 112 страниц про Париж, надеюсь, помогут сделать этот выбор. Предложенные 7 прогулок по городу включают в себя не только известные всему миру достопримечательности, но и множество других, которые часто остаются за пределами стандартных туристических маршрутов.  

Елена Р Стамбулян , Елена Р. Стамбулян

Руководства / Путеводители / Словари и Энциклопедии
40+. Уход за телом
40+. Уход за телом

Женщина после 40 лет – настоящая богиня, умудренная опытом и оттого еще более прекрасная. Но чтобы надолго сохранить красоту и молодость, нужно постоянно собой заниматься: ухаживать за своим телом, руками и ногами, выполнять физические упражнения и соблюдать диету. Благодаря этой книге вы научитесь самостоятельно готовить омолаживающие, питательные, увлажняющие кремы и маски, а также скрабы и пилинги из натуральных продуктов; выполнять легкие и эффективные упражнения для стройной фигуры и профилактики варикозного расширения вен, делать массаж рук и ног, навсегда избавитесь от целлюлита и сможете легко ориентироваться в выборе омолаживающих процедур в СПА-салонах и хирургических операций в клиниках красоты. Правила здорового питания, популярные диеты и рецепты полезных блюд – в этой книге есть все, что поможет 40-летним женщинам всегда быть в форме.

Анастасия Витальевна Колпакова

Здоровье / Руководства / Здоровье и красота / Дом и досуг / Словари и Энциклопедии

Все жанры