Глава 5. Сбор информации
89
каталогом,.в.котором.будут.создаваться.копии..Когда.команда.
getopts
.анализирует.
параметр.с.указанным.выше.аргументом,.она.помещает.данный.параметр.в.пере-
менную.с.именем.
OPTARG
,.а.сохраняет.в.
DESTDIR
,.так.как.при.следующем.вызове.
getopts
.переменная.
OPTARG
.может.быть.изменена.
.Сценарий.позволяет.указывать.в.этом.параметре.прописную.букву.R.или.строч-
ную.r..Операторы.
case
.задают.образец.для.сопоставления,.а.не.просто.литерал..
Поэтому.для.данного.случая.мы.написали.
[Rr])
,.используя.конструкцию.скобок,.
указывающих,.что.любая.буква.считается.совпадением.
.Другие.параметры.устанавливают.переменные,.чтобы.мы.могли.их.задейство-
вать..В.этом.случае.мы.отменяем.(
UNSET
).ранее.установленную.переменную..Когда.
эта.переменная.будет.указана.позже.как.
$
.
DEEP
.
ORNOT
,.она.не.будет.иметь.значения,.
поэтому.фактически.исчезнет.из.командной.строки,.в.которой.используется.
.Это.еще.один.шаблон.подстановки,.
*
,.соответствующий.чему.угодно..Если.
ни.один.другой.шаблон.не.будет.найден,.выполнится.данное.условие..По.сути,.это.
условие.
else
.для.оператора.
case
.
.Закончив.анализ.параметров,.мы.можем.избавиться.от.аргументов,.обрабо-
танных.с.помощью.
shift
..Только.следует.учесть,.что.разовое.выполнение.
shift
.
избавляет.лишь.от.одного.аргумента..В.этом.случае.аргумент,.расположенный.
вторым,.становится.первым,.третий.становится.вторым.и.т..д..Указание.количества.
повторений.команды.
shift
,.например.
shift5
,.позволит.избавиться.от.первых.пяти.
аргументов.и.в.результате.аргумент.
$6
.станет.
$1
,.
$7
.станет.
$2
.и.т..д..При.вызове.
getopts
.отслеживается,.какие.аргументы.требуется.обработать.в.переменной.обо-
лочки.
OPTIND
..Выполнив.нужное.количество.повторений.команды.
shift
,.мы.избав-
ляемся.от.любых/всех.проанализированных.параметров..После.такого.сдвига.
$1
.
будет.ссылаться.на.первый.аргумент,.независимо.от.того,.были.ли.предоставлены.
какие-либо.параметры,.когда.пользователь.вызывал.сценарий.
.Два.возможных.аргумента.не.в.формате.
-option
.—.это.шаблон,.который.мы.
ищем,.и.каталог,.в.котором.хотим.начать.поиск..Когда.мы.ссылаемся.на.переменную.
bash,.можем.добавить.
:-
.и.сказать:.«Если.это.пустое.значение.не.задано,.вернуть.
вместо.него.значение.по.умолчанию»..По.умолчанию.для.
PATTERN
.мы.присваиваем.
значение.в.виде.документа.
PDF
,.а.значением.по.умолчанию.для.
STARTDIR
.является.
.
,.
что.означает.ссылку.на.текущий.каталог.
.Далее.вызывается.команда.
find
,.которая.должна.начать.поиск.в.
$STARTDIR
..
Помните,.что.
$DEEPORNOT
.может.не.устанавливаться.и,.следовательно,.ничего.
не.добавлять.в.командную.строку..Кроме.того,.здесь.может.находиться.значение.
по.умолчанию.
-maxdepth
.
1
,.указывающее,.что.
find
.не.следует.искать.глубже.этого.
каталога..Чтобы.находить.только.простые.файлы.(не.каталоги.или.специальные.
файлы.устройств.либо.FIFO),.мы.добавили.параметр.
-type
.
f
..Этот.параметр.
90
Do'stlaringiz bilan baham: |