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

Пример 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, а затем, с помощью все той же операции подстановки команды и оператора ( ... ) -- записать в массив.

Оглавление книги


Генерация: 1.160. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз