Читайте также
2.2.1. Цикл типа “пока” (цикл с предусловием)
Пример 1.4: Нахождение наибольшего общего делителя двух целых положительных чисел с помощью известного алгоритма Евклида.Пока X ? Y делать
если X> Y
то X:=X-Y
иначе Y:=Y-X;
Писать (‘НОД=’, X);WHILE X <> Y DO
IF X> Y
THEN X:=X-Y
ELSE Y:=Y-X;
WRITE
Пример 3-1. Вложенные блоки и перенаправление ввода-вывода
#!/bin/bash# Чтение строк из файла /etc/fstab.File=/etc/fstab{read line1read line2} < $Fileecho "Первая строка в $File :"echo "$line1"echoecho "Вторая строка в $File :"echo "$line2"exit
Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка
#!/bin/bash# Список планет.# Имя кажой планеты ассоциировано с расстоянием от планеты до Солнца (млн. миль).for planet in "Меркурий 36" "Венера 67" "Земля 93" "Марс 142" "Юпитер 483"do set -- $planet # Разбиение переменной "planet" на
Пример 10-14. Простой цикл while
#!/bin/bashvar0=0LIMIT=10while [ "$var0" -lt "$LIMIT" ]do echo -n "$var0 " # -n подавляет перевод строки. var0=`expr $var0 + 1` # допускается var0=$(($var0+1)).doneechoexit
Пример 10-16. Цикл while с несколькими условиями
#!/bin/bashvar1=unsetprevious=$var1while echo "предыдущее значение = $previous" echo previous=$var1 # запомнить предыдущее значение [ "$var1" != end ] # В операторе "while" присутствуют 4 условия, но только последнее управляет циклом. # *последнее* условие -
Пример 10-18. Цикл until
#!/bin/bashuntil [ "$var1" = end ] # Проверка условия производится в начале итерации.do echo "Введите значение переменной #1 " echo "(end - выход)" read var1 echo "значение переменной #1 = $var1"done exit
Пример 10-19. Вложенный цикл
#!/bin/bash# Вложенные циклы "for".outer=1 # Счетчик внешнего цикла.# Начало внешнего цикла.for a in 1 2 3 4 5do echo "Итерация #$outer внешнего цикла." echo "---------------------" inner=1 # Сброс счетчика вложенного цикла. # Начало вложенного цикла. for b in 1 2 3 4 5 do echo "Итерация
Пример 11-6. Чтение командой read из файла через перенаправление
#!/bin/bashread var1 <data-fileecho "var1 = $var1"# Первая строка из "data-file" целиком записывается в переменную var1read var2 var3 <data-fileecho "var2 = $var2 var3 = $var3"# Обратите внимание!# Поведение команды "read" далеко от ожидаемого!# 1) Произошел возврат
Пример 16-2. Перенаправление stdout с помощью exec
#!/bin/bash# reassign-stdout.shLOGFILE=logfile.txtexec 6>&1 # Связать дескр. #6 со stdout. # Сохраняя stdout.exec > $LOGFILE # stdout замещается файлом "logfile.txt".# ----------------------------------------------------------- ## Весь вывод от команд, в данном блоке, записывается в файл
Пример 16-3. Одновременное перенаправление устройств, stdin и stdout, с помощью команды exec
#!/bin/bash# upperconv.sh# Преобразование символов во входном файле в верхний регистр.E_FILE_ACCESS=70E_WRONG_ARGS=71if [ ! -r "$1" ] # Файл доступен для чтения?then echo "Невозможно прочитать из заданного файла!" echo
Пример 16-4. Перенаправление в цикл while
#!/bin/bashif [ -z "$1" ]then Filename=names.data # По-умолчанию, если имя файла не задано.else Filename=$1fi# Конструкцию проверки выше, можно заменить следующей строкой (подстановка параметров):#+ Filename=${1:-names.data}count=0echowhile [ "$name" != Smith ] # Почему переменная $name взята
Пример 16-9. Перенаправление в конструкции if/then
#!/bin/bashif [ -z "$1" ]then Filename=names.data # По-умолчанию, если файл не задан.else Filename=$1fiTRUE=1if [ "$TRUE" ] # конструкции "if true" и "if :" тоже вполне допустимы.then read name echo $namefi <"$Filename"# ^^^^^^^^^^^^# Читает только первую строку из файла.exit