Краткое введение в программирование на Bash | страница 9



>#!/bin/bash

>for x in paper pencil pen; do

>echo "значение переменной х равно $х"

>sleep 1

>done

При запуске программы, вы видите, что х сначала имеет значение «pencil», а затем она принимает значение «pen». Когда у переменной заканчивается список возможных значений, цикл завершается.

Ниже приведен гораздо более полезный пример. Этот скрипт добавляет расширение .html для всех файлов в текущей директории[10]:

>#!/bin/bash

>for file in *; do

>echo "Добавляем расширение .html для файла $file ..."

>mv $file $file.html

>sleep 1

>done

Символ * имеет специальное значение, которое в данном случае означает «все в текущем каталоге», т.е. — все файлы в каталоге. Переменная file последовательно принимает значения, соответствующие именам файлов в текущем каталоге. Затем используется программа mv для переименования файла в файл с расширением .html:

case … in … esac

Оператор case очень похож на if. Он отлично подходит для тех случаев, когда нужно проверить несколько условий, и вы не хотите для этого использовать несколько вложенных операторов if. Поясним на примере:

>#!/bin/bash

>x=5 # инициализируем х значением 5

># проверяем значение х:

>case $x in

>0) echo "значение х равно 0"

>;;

>5) echo "значение х равно 5"

>;;

>9) echo "значение х равно 9"

>;;

>*) echo "значение неизвестно"

>;;

>esac

Оператор case проверяет переменную х на равенство трем значениям. В приведенном примере, он сначала проверит, равен ли х нулю 0, затем равен ли он 5, затем равен ли он 9. И, если все проверки завершились неудачно, скрипт выведет сообщение, что значение x определить не получилось. Помните, что «*» означает «все», и в этом случае, «любое другое значение, помимо указанных явно». Если х имеет любое другое значение, отличное от 0, 5 или 9, то это значение попадает во категорию «*». При использовании сase каждое условие должно заканчиваться двумя точками с запятой.

Зачем нужно использовать case, когда вы можно использовать if? Ниже приведен пример эквивалентного скрипта, написанного с использованием if. Решение о том, что быстрее написать и легче прочесть, предлагается принять самостоятельно:

>#!/bin/bash

>x=5 # инициализируем х значением 5

>if [ "$x" -eq 0 ]; then

>echo "Значение х равно 0"

>elif [ "$x" -eq 5 ]; then

>echo "значение х равно 5"

>elif [ "$x" -eq 9 ]; then

>echo "значение х равно 9"

>else

>echo "Значение х определить не удалось"

>fi

Использование кавычек

Кавычки играют важную роль в написании скриптов оболочки. Существует три типа кавычек. Это двойные кавычки: «, одинарные ‘ (апостроф) и обратные `