Присвоение значений переменным

Существует еще несколько способов присвоения значения переменной:

· использование команды read для присвоения ввода переменной;

· перенаправление вывода команды в переменную;

· присвоение позиционного параметра переменной.

Использование команды read

Общий формат команды read:

read variable<ENTER>

Значение, присвоенное командой read переменной variable, будет заменять $variable где бы она не встречалась в программе пользователя.

Команда read будет ждать до тех пор, пока вы не введете строку символов и нажмете клавишу <ENTER>, тем самым присваивая строку переменной.

Следующий пример покажет вам, как написать простую shell программу num.please, содержащую имена. Программа будет выглядеть следующим образом:

cat num.please<ENTER>

echo Введите имя:

Read name

grep $name home/list

Создайте файл list, содержащий несколько фамилий и номеров телефонов. И теперь запустите файл num.please. В следующем примере приводится текст программы mknum, которая создает список номеров телефонов и абонентов.

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

С помощью команды cat:

cat mknum<ENTER>

отобразите содержание программы mknum:

Echo Введите имя

Read name

Echo Введите номер

Read num

echo $name $num >> list

Сделайте mknum выполняемой программой:

chmod u+x mknum<ENTER>

4.6. Арифметические операции: команда let

Команда let- это команда интерпретатора BASH shell, обеспечивающая выполнение операций над арифметическими величинами. С помощью этой команды можно сравнивать числовые значения или выполнять над ними арифметические операции, такие как сложение или умножение. Командаlet задается либо с помощью ключевого слова let, либо посредством двойных круглых скобок. Базовый формат команды включает ключевое слово let, за которым следуют два числовых значения, разделенных арифметическим оператором либо оператором сравнения:

$ letзначение1 оператор значение2

Следующий пример наглядно демонстрирует, как изменяется работа интерпретатора при использовании ключевого слова let.

$ T=2+3

$ echo $T

2+3

$ let T=2+3

$ echo $T

В shell-сценариях может использоваться любой из перечисленных в таблице 1 операторов.

Ключевое слово letможно использовать и без оператора присваивания.

$ let 2*7

Если в арифметическом выражении между операндами необходимо поместить пробелы, выражение следует заключить в кавычки. Аргументом команды letможет быть только одно арифметическое выражение, например: $ let "2V*V7"

Таблица 1

Арифметические операторы Функции
* Умножение
/ Деление
+ Сложение
- Вычитание
Логические операторы Функции
> Больше чем
< Меньше чем
>= Больше либо равно
<= Меньше либо равно
= Равенство в выражениях
!= Не равно

Конструкции языка программирования Shell

Язык программирования shell имеет несколько конструкций, которые придадут гибкость вашим программам:

· комментарии позволят описывать функции программы;

· команда exit позволяет завершать программу в нужной точке и использовать коды возврата;

· конструкции цикла for, while позволяют повторять группу команд в цикле;

· условные команды if и case выполняют группу команд, если выполнилось некоторое условие;

· команда break позволяет выполнить безусловный выход из цикла.

Комментарии

Чтобы в программе разместить комментарии, воспользуйтесь знаком #. Если знак # стоит после команды, то сама команда выполняется, а комментарий игнорируется. Формат строки комментария:

#comment<ENTER>

Циклы

Операторы цикла for и while позволяют выполнить команду или последовательность команд несколько раз.

Оператор for

Оператор for выполняет последовательность команд для каждого элемента списка. Он имеет формат:

forпеременная<ENTER>

in значения переменной<ENTER>

do<ENTER>

команда_1<ENTER>

последняя команда<ENTER>

done<ENTER>

Для каждой итерации цикла следующий элемент списка присваивается переменной, данной в операторе for. Ссылка на эту переменную может быть сделана в любом месте в командах внутри оператора do. При конструировании каждой секции команд вам необходимо убедиться, что каждому do соответствует done в конце цикла. Переменная может иметь любое имя. Например, если ваша переменная названа var, то ссылка в списке команд на $var сделает значение доступным. Если оператор in опущен, то значением для var будет набор аргументов, заданный в команде и доступный в специальном параметре $*. Список команд между ключевым словом do и done будет выполнен для каждого значения.

Когда команды будут выполнены для последнего элемента списка, программа будет выполнять строку ниже done.

Оператор while

Оператор цикла while использует 2 группы команд. Он будет выполнять последовательность команд во второй группе (список do ... done) до тех пор, пока последняя команда в первой группе (список while) возвращает состояние "истина", означающее, что выражение после do может быть выполнено.

Общий формат оператора цикла while:

while<ENTER>

команда_1<ENTER>

последняя команда<ENTER>

do<ENTER>

команда _1<ENTER>

последняя команда<ENTER>

done<ENTER>

Например, программа enter.name использует цикл while для ввода списка имен в файл. Программа состоит из следующих командных строк:

echo “Введите пожалуйста список имён<ENTER>”

echo “после завершения ввода нажмите <Ctrl+D>”

While read x

Do

echo $x>>xfile

Done

echo xfile содержит следующие имена:

Cat xfile

Их можно просмотреть, введя команду:

cat enter.name<ENTER>

Обратите внимание, что после завершения цикла программа выполняет команды ниже done.

После того, как цикл завершится, программа распечатает все имена, содержащиеся в xfile.

Наши рекомендации