Пример 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.