18.3.20. Добавление и проверка целых значений

18.3.20. Добавление и проверка целых значений

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

Пользователь может изменить значение путем ввода нового значения, или же ничего не менять, нажав клавишу [Return]. Затем текущее значение выводится на экран, и сценарий завершается.

Если пользователь вводит у или у, поступает приглашение на ввод нового значения, которое добавляется к счетчику. Если пользователь нажимает клавишу [Return], сценарий с помощью команды echo сообщает, что счетчик сохраняет старое значение. Когда пользователь вводит значение, проверка чисел позволяет уточнить, является ли это значение числом. Если это так, значение добавляется к значению counter и затем отображается на экране.

$ pg ifcounter

#!/bin/sh

# ifcounter

COUNTER=100

echo "Do you wish to change the counter value currently set at $COUNTER ? [y...n] :"

read ANS

if [ "$ANS"="y" ] || [ "$ANS"="Y" ]; then

# да, пользователь желает изменить значение

echo "Enter a sensible value "

read VALUE

#простой тест для уточнения, является ли значение численным,

#добавим к VALUE любое число, проверим код возврата

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

STATUS=$?

# проверим код возврата для expr

if [ "$VALUE"="" ] || [ "$STATUS" != "0" ]; then

# направим ошибки в стандартный поток ошибок

echo " You either entered nothing or a non?numeric " >&2

echo " Sorry now exiting..counter stays at. $COUNTER" >&2 exit 1 fi

# если мы здесь, значит, это — число, добавим его к COUNTER

COUNTER=`expr $COUNTER + $VALUE`

echo " Counter now set to $COUNTER" else

#если мы здесь, значит, пользователь вместо того, чтобы ввести число,

#нажал клавишу ввода

#или ответим n для изменения значения приглашения

echo " Counter stays at $COUNTER"

fi

Рассмотрим результаты выполнения приведенного сценария.

$ ifcount

Do you wish to change the counter value currently set at 100? [y..n]:n Counter stays at 100

$ ifcount

Do you wish to change the counter value currently set at 100? [y..n]:y

Enter a sensible value: fdg

You either entered nothing or a non?numeric

Sorry now exiting..counter stays at 100

$ ifcount

Do you wish to change the counter value currently set at 100? [y..n]:y Enter a sensible value: 250

Counter now set to 350

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.1. Неочевидные особенности целых чисел

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

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


3.1.1. Аппаратное представление целых чисел

Из книги Технология XSLT автора Валиков Алексей Николаевич

3.1.1. Аппаратное представление целых чисел Delphi относится к языкам, в которых целые типы данных максимально приближены к аппаратной реализации целых чисел процессором. Это позволяет выполнять операции с целочисленными данными максимально быстро, но заставляет


5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования)

Из книги VBA для чайников автора Каммингс Стив

5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования) Часто требуется добавлять элемент X в список L только в том случае, когда в списке еще нет такого элемента. Если же X уже есть в L, тогда L необходимо оставить без изменения, поскольку


Присваивание значений

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Присваивание значений Значения переменным присваиваются с помощью обыкновенного знака равенства. Например, чтобы поместить число 3 в переменную с именем intC, напечатайте intC = 3В VBA оператор присваивания представляет собой связанную знаком равенства конструкцию, с


Сравнение значений

Из книги 19 смертных грехов, угрожающих безопасности программ автора Ховард Майкл


Области значений

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Области значений Область значений — это интервал от минимального до максимального значения, которое может быть представлено в переменной данного типа. В таблице 3.3 приведен размер занимаемой памяти и области значений переменных для каждого типа. Поскольку переменных


9.6. $RANDOM: генерация псевдослучайных целых чисел

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

9.6. $RANDOM: генерация псевдослучайных целых чисел $RANDOM -- внутренняя функция Bash (не константа), которая возвращает псевдослучайные целые числа в диапазоне 0 - 32767. Функция $RANDOM не должна использоваться для генераци ключей


Пример 22-6. Сравнение двух больших целых чисел

Из книги автора

Пример 22-6. Сравнение двух больших целых чисел #!/bin/bash# max2.sh: Наибольшее из двух БОЛЬШИХ целых чисел.# Это модификация предыдущего примера "max.sh",# которая позволяет выполнять сравнение больших целых чисел.EQUAL=0 # Если числа равны.MAXRETVAL=255 # Максимально возможное


3.2.1.9. Только GLIBC: чтение целых строк: getline() и getdelim()

Из книги автора

3.2.1.9. Только GLIBC: чтение целых строк: getline() и getdelim() Теперь, когда вы увидели, как читать строки произвольной длины, вы можете сделать вздох облегчения, что вам не нужно самим писать такую функцию. GLIBC предоставляет вам для этого две функции:#define _GNU_SOURCE 1 /* GLIBC */#include <stdio.h>#include


17.5.2. Проверка численных значений

Из книги автора

17.5.2. Проверка численных значений Команду expr можно применять для выполнения сравнений чисел. Если вычисления выполняются с числами, отличными от целых, отображается сообщение об ошибке, например:$ expr rr + 1expr: нечисловой аргументИтак, необходимо передать значение


18.3.2. Проверка значений переменных

Из книги автора

18.3.2. Проверка значений переменных Чтобы узнать, задал ли пользователь информацию, можно проверить переменную, которая используется для просмотра вводных данных. Ниже приведены результаты проверки того, присвоены ли какие?либо данные переменной name после нажатия


19.5. Проверка значений, возвращаемых функцией

Из книги автора

19.5. Проверка значений, возвращаемых функцией Для проверки значения, возвращаемого вызванной функцией, можно воспользоваться кодом завершения последней команды, размешенной непосредственно после функции, которая вызывается из сценария. Например:check it ls_a directory $FILENAME #


Типы значений

Из книги автора

Типы значений B Java и C# различаются типы значений и типы ссылок.• Типы значений. Это такие элементарные типы, как char, int и float, а также структуры struct в C#. Характерным для них является то, что для их создания не используется оператор new и оператор присваивания копирует значение