Часть I • Основы
pwd
cd ..
done
Цикл.
for
.также.доступен.в.bash,.причем.в.трех.вариантах.
Организовать.простой.числовой.цикл.можно.с.использованием.двойных.скобок..
Он.очень.похож.на.цикл.
for
.в.C.или.Java,.но.с.двойными.скобками.и.с.
do
.и.
done
.
вместо.фигурных.скобок:
for ((i=0; i < 100; i++))
do
echo $i
done
Цикл.
for
.другого.вида.используется.для.перебора.всех.параметров,.которые.пере-
даются.сценарию.оболочки.(или.функции.в.сценарии),.то.есть.
$1
,.
$2
,.
$3
.и.т..д..
Обратите.внимание,.что.
ARG
.в.
args.sh
.можно.заменить.любым.именем.переменной.
по.вашему.выбору.
Пример 2.2.
args.sh
for ARG
do
echo here is an argument: $ARG
done
Вот.вывод.для.примера.2.2,.когда.передается.три.параметра:
$ ./args.sh bash is fun
here is an argument: bash
here is an argument: is
here is an argument: fun
Наконец,.для.произвольного.списка.значений.используйте.аналогичную.форму.
оператора.
for
.и.просто.назовите.каждое.из.значений.для.каждой.итерации.цикла..
Этот.список.может.быть.задан.явно,.например,.так:
for VAL in 20 3 dog peach 7 vanilla
do
echo $VAL
done
Значения,.указанные.в.цикле.
for
,.также.можно.генерировать,.вызывая.другие.про-
граммы.или.используя.другие.функции.оболочки:
for VAL in $(ls | grep pdf) {0..5}
do
Глава 2. Основы работы с bash
39
echo $VAL
done
Здесь.переменная.
VAL
,.в.свою.очередь,.будет.принимать.значение.для.каждого.фай-
ла,.который.командой.
ls
.передается.в.
grep
.и.содержит.буквы.
pdf
.в.своем.имени.
(например,.
doc.pdf
.или.
notapdfile.txt
),.а.затем.переменная.
VAL
.примет.значение.
каждого.числа.от.0.до.5..Возможно,.не.очень.разумно,.чтобы.переменная.
VAL
.иногда.
была.именем.файла,.а.иногда.—.одной.цифрой,.но.это.всего.лишь.пример.
Фигурные скобки можно использовать для создания последовательности чисел
(или отдельных символов) {first..last..step}, где ..step может быть положительным
или отрицательным и является опциональным. В последних версиях bash указа-
ние 0 приведет к тому, что числовые значения будут дополнены нулем до той же
длины. Например, последовательность {090..104..2} будет заполнена четными
цифрами, находящимися в диапазоне от 090 до 104 включительно, причем каждая
цифра будет представлена в виде трех чисел.
Функции
Синтаксис.функции.в.bash.следующий:
function myfun ()
{
# это тело функции
}
Не.все.эти.компоненты.обязательны..Вы.можете.указать.или.
function
,.или.
()
..Мы.же.
будем.использовать.и.ключевое.слово,.и.скобки.в.основном.для.удобства.чтения.
Есть.несколько.важных.факторов,.которые.следует.учитывать.при.работе.с.функ-
циями.bash.
Если.указанная.внутри.функции.команда.не.объявлена.как.
local
,.переменные.
в.видимой.области.являются.глобальными..Цикл.
for
,.устанавливающий.и.уве-
личивающий.значение.
i
,.можно.использовать.в.любом.месте.вашего.кода.
Скобки.—.это.наиболее.популярные.символы.для.группировки.в.теле.функции,.
но.разрешен.любой.из.составных.синтаксисов.команд.оболочки..Хотя.зачем,.
например,.запускать.функцию.в.подоболочке?
Перенаправление.ввода/вывода.(I/O),.заключенное.в.фигурные.скобки,.рас-
пространяется.на.все.операторы.внутри.функции..Примеры.такого.перенаправ-
ления.будут.приведены.в.следующих.главах.
40
Do'stlaringiz bilan baham: |