Home

Page 22
Page 22
background image

U

ser

  

A

nd

LINUX

Programming

ualinux.com

22

U & L  

1 1 - 0 1

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

1 до 10 и одновременно скрипт печатает на экране точку.

Приведенный дальше пример показывает, что я имею в 

виду под выражением «переменная последовательно при-

нимает несколько значений»:

#!/bin/bash
for x in paper pencil pen; do
echo «значение переменной х равно $х»
sleep 1
done

При запуске программы, вы видите, что х сначала имеет 

значение «pencil», а затем она принимает значение «pen». 

Когда у переменной заканчивается список возможных зна-

чений, цикл завершается.

Ниже приведен гораздо более полезный пример. Этот 

скрипт добавляет расширение .html для всех файлов в те-

кущей директории (Этот скрипт действительно так и по-

ступает и вам возможно это не нужно. Поэтому все-таки 

создайте отдельного пользователя, если вы еще до сих пор 

этого не сделали, и экспериментируйте под ним. – Прим. 

перев.):

#!/bin/bash
for fi le in *; do
echo «Добавляем расширение .html для фай-

ла $fi le …»

mv $fi le $fi le.html
sleep 1
done

Символ * имеет специальное значение, которое в дан-

ном случае означает «все в текущем каталоге», т.е. все фай-

лы в каталоге. Переменная fi le последовательно принима-

ет значения, соответствующие именам файлов в текущем 

каталоге. Затем используется программа 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 

ИСПОЛЬЗОВАНИЕ КАВЫЧЕК

Кавычки играют важную роль в написании скриптов 

оболочки. Существует три типа кавычек. Это: двойные ка-

вычки «, одинарные ' (апостроф) и обратные ` (находятся 

слева от клавиши 1. – Прим. перев.). Имеет ли каждый из 

приведенных видов какое-то особое значение? Да.

Примечание: Статья Wildcards, Quotes, Back Quotes, 

Apostrophes in shell commands ( * ? [] ” ' ') прекрасно описы-

вает использование специальных символов. Пожалуйста, 

ознакомьтесь с ней в случае, если вы не знакомы с исполь-

зованием этих специальных символов в скриптах оболоч-

ки. Ниже приведено краткое объяснение использования 

некоторых из них.

Двойные кавычки используются главным образом для 

объединения нескольких слов в строку и сохранения в 

ней пробелов. Например, «Эта строка содержит пробелы». 

Строка, заключенная в двойные кавычки рассматривается 

как единое целое. Например:

mkdir hello world
ls -F


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.