
U
ser
A
nd
LINUX
Programming
ualinux.com
19
U & L
1 1 - 0 1
ются системой и имеют специальной назначение. Обычно
их значение может быть выведено с помощью команды
echo. Например, если ввести:
echo $SHELL
/bin/bash
Вы получили имя оболочки, запущенной в данный мо-
мент. Переменные среды задаются в файле /etc/profi le и в
~/.bash_profi le. Команда echo может применяться для про-
верки текущего значения переменной.
Примечание: задание переменных среды подробно
описано в этой статье – «Как задавать переменные сре-
ды» – http://learnbyexamples.org/linux/linux-tip-how-to-set-
shell-environment-variables-bash-shell.html. В статье также
описаны некоторые особенности оболочки Bash.
Если у вас все еще возникают проблемы с пониманием
того, зачем нужно использовать переменные, приведем
пример:
#!/bin/bash
echo «Значение х – 12».
echo «У меня есть 12 карандашей».
echo «Он сказал мне, что значение х равно
12».
echo «Мне 12 лет.»
echo «Как получилось, что значение х рав-
но 12?»
Хорошо, теперь предположим, что вы решите поменять
значение х на 8 вместо 12. Что для этого нужно сделать? Вы
должны изменить все строки кода, в которых говорится,
что х равно 12. Но погодите... Есть другие строки кода, где
упоминается это число, поэтому простую автозамену ис-
пользовать не получится. Теперь приведем аналогичный
пример, только с использованием переменных:
#!/bin/bash
x=12 # задаем переменной х значение 12
echo «Значение х = $х»
echo «У меня есть 12 карандашей»
echo «Он сказал мне, что значение х равно
$х»
echo «Мне 12 лет»
echo «Как получилось, что значение х рав-
но $x?»
Здесь мы видим, что $x выводит текущее значение
переменной х равное 12. Поэтому теперь, если вы хотите
задать новое значение х равное 8, то все что вам нужно
сделать, это изменить одну строчку с х=12 на х=8, и в выво-
де все строки с упоминанием x также изменяться. Поэтому
вам не нужно руками модифицировать остальные строки.
Как вы увидите позже, переменные имеют и другие спосо-
бы применения.
УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ
Управляющие операторы делают вашу программу ком-
пактнее и позволяют ей принимать решения. И, что еще
более важно, они позволяют нам выполнять проверку на
наличие ошибок. До сих пор все, что мы сделали, это писа-
ли скрипты, которые просто исполняют набор инструкций
в файле. Например:
#!/bin/bash
cp /etc/foo .
echo ”Готово”
Это небольшой скрипт, назовем его bar.sh, копирует
файл с именем /etc/foo в текущий каталог и выводит «Го-
тово» на экране. Эта программа будет работать при одном
условии - файл /etc/foo должен существовать. В противном
случае вот что произойдет:
./bar.sh
cp: /etc/foo: No such fi le or directory
Готово
Таким образом, как вы видите, существует проблема.
Не у каждого, кто будет запускать вашу программу, будет
файл /etc/foo. Наверное, было бы лучше, если бы ваша
программа сначала проверяла наличие данного файла, а
затем при положительном ответе – выполняла бы копиро-
вание, в противном случае – просто бы завершала работу.
В псевдо-коде это выглядит так:
если /etc/foo существует, то
скопировать /etc/foo в текущую директо-
рию
напечатать «Готово» на экране
в противном случае,
напечатать на экране «Этот файл не суще-
ствует»
выход
Можно ли это сделать в Bash? Конечно! Набор управ-
ляющих операторов Bash включает в себя: if, while, until,
for и case. Каждый из этих операторов является парным, то
есть начинается он одним тегом и заканчивается другим.
Например, если условный оператор if начинается с if и за-
канчивается fi . Управляющие операторы cp /etc/foo . – это
не отдельные программы в системе, они встроены в bash.
if … else … elif … fi
Это один из наиболее распространенных операторов.
Он позволяет программе принимать решения следующим
образом – «если условие верно – делаем одно, если нет