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


Программирование на языке сценариев командной оболочки - стр. 237


exit $E_RANGE_ERR fi

fact () { local number=$1 # Переменная "number" должна быть объявлена как локальная, # иначе результат будет неверный. if [ "$number" -eq 0 ] then factorial=1 # Факториал числа 0 = 1. else let "decrnum = number - 1" fact $decrnum # Рекурсивный вызов функции. let "factorial = $number * $?" fi

return $factorial }

fact $1 echo "Факториал числа $1 = $?."

exit 0

Еще один пример использования рекурсии вы найдете в Пример A-18. Не забывайте, что рекурсия весьма ресурсоемкое удовольствие, к тому же она выполняется слишком медленно, поэтому не следует использовать ее в сценариях.

Глава 23. Псевдонимы

Псевдонимы в Bash -- это ни что иное, как "горячие клавиши", средство, позволяющее избежать набора длинных строк в командной строке. Если, к примеру, в файл ~/.bashrc вставить строку alias lm="ls -l | more", то потом вы сможете экономить свои силы и время, набирая команду lm, вместо более длинной ls -l | more. Установив alias rm="rm -i"

(интерактивный режим удаления файлов), вы сможете избежать многих неприятностей, потому что сократится вероятность удаления важных файлов по неосторожности.

Псевдонимы в сценариях могут иметь весьма ограниченную область применения. Было бы здорово, если бы псевдонимы имели функциональность, присущую макроопределениям в языке C, но, к сожалению, Bash не может "разворачивать" аргументы в теле псевдонима. [54] Кроме того, попытка обратиться к псевдониму, созданному внутри "составных конструкций", таких как if/then, циклы и функции, будет приводить к появлению ошибок. Практически всегда, действия, возлагаемые на псевдоним, более эффективно могут быть выполнены с помощью функций.

Пример 23-1. Псевдонимы в сценарии

#!/bin/bash

shopt -s expand_aliases # Эта опция должна быть включена, иначе сценарий не сможет "разворачивать" псевдонимы.

alias ll="ls -l" # В определении псевдонима можно использовать как одиночные ('), так и двойные (") кавычки.




- Начало -  - Назад -  - Вперед -