Читаем Linux-сервер своими руками полностью

Когда переменная х примет значение 10, цикл завершит свою работу, так как программа test вернет значение false (x уже не меньше, а равен 10). Цикл until (до) имеет похожую структуру, но выполняется несколько иначе:

until список1 do

 список2

done

Цикл until прекратит работу, когда условие, указанное в списке список1, станет истинным. Другими словами, он будет выполняться пока это условие ложно. Цикл while, наоборот, выполняется пока условие истинно. Лучше всего разница между этими циклами видна на примере (сравните листинги 19.4 и 19.5)

Листинг 19.4. Цикл while

х=1;

while ! [$х –ge 10]

do echo $x echo $x

 X = $ (($Х + 1))

done

Листинг 19.5. Цикл until

х=1;

until [$x –ge 10]

do

 X=$(($Х + 1))

done

Циклы, приведенные в листингах 19.4 и 19.5, выведут одинаковую последовательность цифр на экран:

1 2 3 4 5 6 7 8 9 10

Рассмотрим еще один полезный цикл select, который позволяет создавать нумерованные пункты меню. Его конструкция такова:

select имя in список1

do

 список2

done

Пример:

echo "Выберите файл для просмотра

select file in /home/den/temp/* QUIT

do

 if [-e $file]; then less $file

 else

  break

done;

В моем временном каталоге /home/den/temp находится всего два файла — file.txt, proto.txt, поэтому на экране монитора будет отображено следующее:

Выберите файл для просмотра:

/home/den/temp/.

/home/den/temp/..

/home/den/temp/file.txt

/home/den/temp/proto.txt

QUIT

Первые два файла — это ссылки на текущий и родительский каталоги. Пункты меню 3 и 4 — это файлы, которые можно выбрать для просмотра. QUIT — это последний элемент списка. При его выборе сработает оператор break и цикл завершится.

<p>19.7.7. Подстановка переменных</p>

Мы уже рассмотрели подстановку команд, сейчас рассмотрим подстановку переменных (см. табл. 19.41).

Подстановка переменных Таблица 19.41

Конструкция Описание
${переменная:-значение}Если переменная определена и не является пустой строкой, подставляется ее значение, иначе подставляется значение, указанное в конструкции. Реальное значение переменной при этом не изменяется
${переменна:=значение}Значение присваивается переменной, если она не определена или является пустой строкой
${переменная:?сообщение}Если переменная не определена или является пустой строкой, выводится указанное сообщение
${переменная:+значение}Если переменная инициализирована (определена), вместо нее используется указанное в конструкции значение. Реальное значение переменной не изменяется
${переменная}Если переменная определена, то подставляется ее значение. Скобки используются лишь тогда, если после переменной стоит символ, который может «приклеиться» к имени переменной

Пример.

${1 :? "Не хватает параметра"}

Данное сообщение будет выведено, если сценарий будет запущен без параметров. Если указать хотя бы один параметр, сообщение не будет отображаться на экране.

<p>19.7.8. Функции</p>

Описание функции выглядит так:

имя() { список; }

Пример:

cdir()

{

 # изменяем каталог

 cd /

}

При выполнении функция не создает нового процесса, а выполняется в среде процесса, содержащего эту функцию. Аргументы функции можно передать ей как обыкновенные параметры при вызове сценария. Функции можно описывать в любом месте сценария, но вызов функции должен осуществляться только после ее описания. Возвращаясь к примеру, модифицируйте функцию:

#!/bin/bash

# файл fn

echo $$

cdir()

{

 # изменяем каталог

 echo "Х=$Х"

 Х=2

 echo "Params $0 $# $1 $2"

 echo "PID = $$"

 return 0

 cd $1

}

X=1

echo "X=$X"

cdir /etc

# вызов функции "cd" с параметрами

echo $?

echo "X=$X"

На экране вы увидите примерно следующую информацию:

788

Х=1

Х=1

Перейти на страницу:

Все книги серии Секреты мастерства

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети, интернет / ОС и Сети / Книги по IT