Пример 33-10. Необычный способ передачи возвращаемого значения

Пример 33-10. Необычный способ передачи возвращаемого значения

#!/bin/bash

# multiplication.sh

multiply () # Функции выполняет перемножение всех переданых аргументов.

{

local product=1

until [ -z "$1" ] # Пока не дошли до последнего аргумента...

do

let "product *= $1"

shift

done

echo $product # Значение не будет выведено на экран,

} #+ поскольку оно будет записано в переменную.

mult1=15383; mult2=25211

val1=`multiply $mult1 $mult2`

echo "$mult1 X $mult2 = $val1"

# 387820813

mult1=25; mult2=5; mult3=20

val2=`multiply $mult1 $mult2 $mult3`

echo "$mult1 X $mult2 X $mult3 = $val2"

# 2500

mult1=188; mult2=37; mult3=25; mult4=47

val3=`multiply $mult1 $mult2 $mult3 $mult4`

echo "$mult1 X $mult2 X $mult3 X mult4 = $val3"

# 8173300

exit 0

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

capitalize_ichar () # Первый символ всех строковых аргументов

{ #+ переводится в верхний регистр.

string0="$@" # Принять все аргументы.

firstchar=${string0:0:1} # Первый символ.

string1=${string0:1} # Остаток строки.

FirstChar=`echo "$firstchar" | tr a-z A-Z`

# Преобразовать в верхний регистр.

echo "$FirstChar$string1" # Выдать на stdout.

}

newstring=`capitalize_ichar "each sentence should start with a capital letter."`

echo "$newstring" # Each sentence should start with a capital letter.

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

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

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

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

12.8 План передачи ПО

Из книги ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВСТРОЕННЫХ СИСТЕМ. Общие требования к разработке и документированию автора Госстандарт России


Подготовка данных для передачи

Из книги Skype: бесплатные звонки через Интернет. Начали! автора Гольцман Виктор Иосифович

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


1. Пустые значения (Empty-значения)

Из книги Базы данных: конспект лекций автора Автор неизвестен

1. Пустые значения (Empty-значения) Пустое значение – это просто одно из множества возможных значений какого-то вполне определенного типа данных.Перечислим наиболее «естественные», непосредственные пустые значения (т. е. пустые значения, которые мы могли бы выделить


2. Неопределенные значения ( Null-значения)

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

2. Неопределенные значения (Null-значения) Слово Null используется для обозначения неопределенных значений в базах данных.Чтобы лучше понять, какие значения понимаются под неопределенными, рассмотрим таблицу, являющуюся фрагментом базы данных: Итак, неопределенное


Способы передачи

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Способы передачи Существуют два способа передачи потокового видео – последовательный (Progressive Streaming) и в реальном времени (Real-Time Streaming).При передаче последовательным способом качество изображения всегда лучше, поскольку видео воспроизводится с жесткого диска


Проблемы передачи

Из книги Adobe Fotoshop CS в примерах (III-IV) автора Топорков Сергей Сергеевич

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


Способ передачи параметров, используемый по умолчанию

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Способ передачи параметров, используемый по умолчанию По умолчанию параметр передается в функцию по значению. Попросту говоря, если не определить для аргумента модификатор, то в функцию передаётся копия переменной.// По умолчанию аргументы передаются по значению.public static


Урок 18. Этот необычный фильтр Liquify

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Урок 18. Этот необычный фильтр Liquify Продолжаем наше обучение. Как можно понять из заголовка, проходить мы будем функцию Stroke (Обводка) и фильтр Liquify (Жидкий). Вы уже встречались с этими двумя функциями, особенно со Stroke (Обводка), но в этом уроке они будут рассмотрены


5.3.1. Учебный пример: SMTP, простой протокол передачи почты

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

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с С:, отправляются почтовым транспортным


5.3.1. Учебный пример: SMTP, простой протокол передачи почты

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с C:, отправляются почтовым транспортным


Линии передачи

Из книги C++ для начинающих автора Липпман Стенли

Линии передачи Хотя в PSpice имеется специальное устройство под именем T (для линий передачи), применение его ограничено, поскольку эта модель не учитывает потерь в линии. Мы предпочитаем использовать для линии передачи модель, которая учитывает потери и содержит элементы R,


7.2.1. Тип возвращаемого функцией значения

Из книги Язык программирования ABC PASCAL автора Цветков Александр Станиславович

7.2.1. Тип возвращаемого функцией значения Тип возвращаемого функцией значения бывает встроенным, как int или double, составным, как int или double*, или определенным пользователем – перечислением или классом. Можно также использовать специальное ключевое слово void, которое


Пример передачи дескриптора

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

Пример передачи дескриптора Теперь мы представим пример передачи дескриптора. Мы напишем программу под названием mycat, которой в качестве аргумента командной строки передается полное имя файла. Эта программа открывает файл и копирует его в стандартный поток вывода. Но