Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec01.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
241.66 Кб
Скачать

Тема 4. Операторы сценариев

4.1 Операторы цикла

Цикл while. Цикл while выполняет операторы до тех пор, пока условие цикла является истинным.

Пример. Вывод на экран целых чисел от 1 до 20:

#!/bin/sh

i=1

while [ $i -le 20 ]

do

echo $i

i=`expr $i + 1`

done

Здесь квадратные скобки представляют собой сокращенную запись команды test.

Операторы сравнения команды test:

-eq = -gt > -lt <

-ne ≠ -ge ≥ -le ≤

Пробел между скобками и тестируемым условием является обязательным.

Все выражения между do и done являются телом цикла.

Цикл until. Цикл until по смыслу противоположен while, он выполняется, пока условие не станет истинным.

Предыдущая программа будет делать то же самое, если третью строку заменить на

until [ $i -gt 20 ]

Условия в циклах while и until можно комбинировать с помощью операций && (and) и | | (or).

Например:

[ $varA -eq 1 ] && [ $varB -gt 7 ]

Цикл for. Цикл for содержит переменную, которая при каждой итерации получает очередной элемент из списка. Цикл продолжается, пока список не будет исчерпан.

Пример:

for i in one two three

do

echo $i

done

Если в этом примере после in записать *, будут выведены имена всех файлов.

В условиях описанных выше циклов можно использовать слова true и false. С их помощью. можно организовать бесконечный цикл.

Для программного прерывания циклов используются операторы break и continue.

Оператор break прерывает цикл немедленно:

while true

do

echo “text”

break

done

Оператор continue заставляет перейти цикл к началу.

4.2 Другие операторы

Оператор shift Аргументы командной строки хранятся в переменных от $1 до $9. Каждый запуск команды shift сдвигает значения аргументов на одну позицию влево и отбрасывает первый. Другими словами, информация, записанная в $1, отбрасывается, значение переменной $2 присваивается переменной $1 и т.д.

Пример:

while [ $# -ne 0 ]

do

echo “Value \$1 is $1”

shift

done

Условный оператор if.

Пример:

if [ $# -ge 1 ]

then

echo “$# arguments”

else

echo “Usage: $0 file1 file2

exit 1

fi

Если в командной строке меньше одного аргумента, оператор if сообщает пользователю, как запускать программу.

Оператор case.

Пример:

echo “Delete file?”

read a

case $a in

n*) break;;

y*) rm file

break;;

esac

В данном случае, если пользователь отвечает y или yes, файл file1 удаляется, если n или no, файл остается в каталоге.

4.3 Арифметические операторы and и or

Пусть имеются команды A и B. Запись A && B означает следующее.

Нужно выполнить команды A и B. Но если A невыполнима, то не нужно выполнять и B.

Пример

tar cf arh.tar a.txt && rm a.txt

Запись A | | B означает следующее: если A невыполнима, выполнить B.

Но если A завершилась успешно, B не выполнять.

Пример

tar cf arh.tar a.txt | | echo “Error”

    1. Код завершения

Большинство программ в Unix по окончанию работы возвращают код завершения. При успешном завершении зто 0. Числа отличные от 0, кака правило, указывают на ошибку.

В сценариях для возврата кода используется оператор exit.Если код не указан явно, программа выполняет код последней выполненной команды.

Код завершения хранится в переменной $?

Пример вывода кода

ls

echo $?

Пример использования кода для принятия решения

if tar cf arh.tar a.txt

then

rm a.txt

else

echo “Error”

fi

Пример с командой test, опция –f означает проверку существования файла

if [ -f program.conf ]

then . . .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]