Краткое введение в программирование на 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
Использование кавычек
Кавычки играют важную роль в написании скриптов оболочки. Существует три типа кавычек. Это двойные кавычки: «, одинарные ‘ (апостроф) и обратные `