Книга: Искусство программирования на языке сценариев командной оболочки
Пример 33-11. Необычный способ получения нескольких возвращаемых значений
Пример 33-11. Необычный способ получения нескольких возвращаемых значений
#!/bin/bash
# sum-product.sh
# Функция может "возвращать" несколько значений.
sum_and_product () # Вычисляет сумму и произведение аргументов.
{
echo $(( $1 + $2 )) $(( $1 * $2 ))
# Вывод на stdout двух значений, разделенных пробелом.
}
echo
echo "Первое число: "
read first
echo
echo "Второе число: "
read second
echo
retval=`sum_and_product $first $second` # Получить результат.
sum=`echo "$retval" | awk '{print $1}'` # Первое значение (поле).
product=`echo "$retval" | awk '{print $2}'` # Второе значение (поле).
echo "$first + $second = $sum"
echo "$first * $second = $product"
echo
exit 0
Следующая хитрость -- передача массива в функцию, и "возврат" массива из функции.
Передача массива в функцию выполняется посредством записи элементов массива, разделенных пробелами, в переменную, с помощью операции подстановки команды. Получить массив обратно можно, следуя вышеописанной стратегии, через вывод на stdout, а затем, с помощью все той же операции подстановки команды и оператора ( ... ) -- записать в массив.
- Пример 33-12. Передача массива в функцию и возврат массива из функции
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Одновременный запуск нескольких копий сервера (multi-instancing)
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Пример 17-10. Блочный комментарий
- Примеры
- Три способа кодирования звука