Пример 22-3. Наибольшее из двух чисел

Пример 22-3. Наибольшее из двух чисел

#!/bin/bash

# max.sh: Наибольшее из двух целых чисел.

E_PARAM_ERR=-198 # Если функции передано меньше двух параметров.

EQUAL=-199 # Возвращаемое значение, если числа равны.

max2 () # Возвращает наибольшее из двух чисел.

{ # Внимание: сравниваемые числа должны быть меньше 257.

if [ -z "$2" ]

then

return $E_PARAM_ERR

fi

if [ "$1" -eq "$2" ]

then

return $EQUAL

else

if [ "$1" -gt "$2" ]

then

return $1

else

return $2

fi

fi

}

max2 33 34

return_val=$?

if [ "$return_val" -eq $E_PARAM_ERR ]

then

echo "Функции должно быть передано два аргумента."

elif [ "$return_val" -eq $EQUAL ]

then

echo "Числа равны."

else

echo "Наибольшее из двух чисел: $return_val."

fi

exit 0

# Упражнение:

# ---------------

# Сделайте этот сценарий интерактивным,

#+ т.е. заставьте сценарий запрашивать числа для сравнения у пользователя (два числа).

Для случаев, когда функция должна возвращать строку или массив, используйте специальные переменные.

count_lines_in_etc_passwd()

{

[[ -r /etc/passwd ]] && REPLY=$(echo $(wc -l < /etc/passwd))

# Если файл /etc/passwd доступен на чтение, то в переменную REPLY заносится число строк.

# Возвращаются как количество строк, так и код завершения.

}

if count_lines_in_etc_passwd

then

echo "В файле /etc/passwd найдено $REPLY строк."

else

echo "Невозможно подсчитать число строк в файле /etc/passwd."

fi

# Спасибо S.C.

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

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

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

ОГОРОД КОЗЛОВСКОГО: Три в двух

Из книги Журнал «Компьютерра» №39 от 25 октября 2005 года автора Журнал «Компьютерра»

ОГОРОД КОЗЛОВСКОГО: Три в двух Три в двух - это не странный монстрик, сочетающий в двух корпусах три функции (как, знаете, бывает «три в одном», вроде МФУ), а три разных устройства - в двух «Огородах». На самом-то деле, по замыслу, - это типичное «три в одном», но двух журнальных


ОГОРОД КОЗЛОВСКОГО: Три в двух

Из книги Журнал «Компьютерра» №40 от 01 ноября 2005 года автора Журнал «Компьютерра»

ОГОРОД КОЗЛОВСКОГО: Три в двух Итак: что же, кроме лентопротяжки, остается от профессионализма GV-D1000E? Способность работать со специальными видеокассетами, снабженными крохотными микросхемами памяти, куда можно уместить пару титров, идентификационную информацию да


Сеть из двух компьютеров

Из книги Домашние и офисные сети под Vista и XP автора Ватаманюк Александр Иванович

Сеть из двух компьютеров Очень часто случается, что нужно постоянно или разово быстро переписать большой объем информации с одного компьютера на другой, рядом стоящий. При этом использовать какие-то средства переноса данных нежелательно или просто лень. В этом случае


Сравнение двух документов

Из книги Word 2007.Популярный самоучитель автора Краинский И

Сравнение двух документов В более ранних версиях Microsoft Word (например, в Word 97) каждый документ имел три кнопки управления размером окна, которые дублировали кнопки управления размером окна программы и отличались лишь тем, что их действие распространялось на текущий


Установка двух ОС

Из книги Установка и настройка Windows XP. Легкий старт автора Донцов Дмитрий

Установка двух ОС Прежде чем устанавливать две операционные системы, вы должны понять, что каждая операционная система занимает ценное дисковое пространство и могут возникнуть проблемы, связанные с совместимостью файловых систем. Каждая операционная система – это


У12.1 Наибольшее целое

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


8.2.11. Объединение двух хэшей

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

8.2.11. Объединение двух хэшей Иногда бывает нужно объединить хэши. Метод merge получает два хэша и формирует из них третий, перезаписывая обнаружившиеся дубликаты:dict = {"base"=>"foundation", "pedestal"=>"base"}added = {"base"=>"non-acid", "salt"=>"NaCl"}new_dict = diet.merge(added)# {"base" =>"non-acid", "pedestal" =>"base", "salt"=>"NaCl"}У


Пример 9-23. Генерация случайных чисел

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Пример 9-23. Генерация случайных чисел #!/bin/bash# $RANDOM возвращает различные случайные числа при каждом обращении к ней.# Диапазон изменения: 0 - 32767 (16-битовое целое со знаком).MAXCOUNT=10count=1echoecho "$MAXCOUNT случайных чисел:"echo "-----------------"while [ "$count" -le $MAXCOUNT ] # Генерация 10 ($MAXCOUNT) случайных


Пример 22-4. Преобразование чисел в римскую форму записи

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

Пример 22-4. Преобразование чисел в римскую форму записи #!/bin/bash# Преобразование чисел из арабской формы записи в римскую# Диапазон: 0 - 200# Расширение диапазона представляемых чисел и улучшение сценария# оставляю вам, в качестве упражнения.# Порядок использования: roman


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

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

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


Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)

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

Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления) #!/bin/bash# primes.sh: Генерация простых чисел, без использования массивов.# Автор: Stephane Chazelas.# Этот сценарий не использует класический алгоритм "Решето Эратосфена",#+ вместо него


11.3.1. Объединение двух файлов

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

11.3.1. Объединение двух файлов Предположим, имеется два текстовых файла: один называется names.txt и содержит имена пользователей с указанием улиц, на которых они проживают, а другой называется town.txt и содержит имена пользователей с указанием городов, в которых они живут.$ cat