Позиционные параметры.
.Обычно.при.использовании.инструментов.командной.
строки.для.передачи.данных.в.команды.применяются.аргументы.или.параметры..
Каждый.параметр.отделяется.пробелом.и.доступен.внутри.bash.с.помощью.спе-
циального.набора.идентификаторов..В.скрипте.bash.доступ.к.первому.параметру,.
переданному.в.скрипт,.можно.получить.с.помощью.
$1
,.ко.второму.—.с.
$2
.и.т..д..
$0
.—.это.специальный.параметр,.который.содержит.имя.скрипта,.а.
$#
.возвращает.
общее.количество.параметров..Взгляните.на.скрипт.в.примере.2.1.
Пример 2.1.
echoparams.sh
#!/bin/bash -
#
# Bash и кибербезопасность
# echoparams.sh
#
# Описание:
# Демонстрация доступа к параметрам в bash
#
# Использование:
# ./echoparms.sh
#
echo $#
echo $0
echo $1
echo $2
echo $3
Этот.сценарий.сначала.выводит.на.экран.количество.параметров.(
$#
),.затем.имя.
сценария.(
$0
),.а.потом.первые.три.параметра..Вот.вывод:
$ ./echoparams.sh bash is fun
3
./echoparams.sh
bash
is
fun
Глава 2. Основы работы с bash
33
Ввод
Пользовательский.ввод.можно.получить.в.bash.с.помощью.команды.
read
..Она.из-
влекает.пользовательский.ввод.из.stdin.и.сохраняет.его.в.указанной.переменной..
Следующий.скрипт.читает.пользовательский.ввод.в.переменную.
MYVAR
.и.затем.
выводит.его.на.экран:
read MYVAR
echo "$MYVAR"
Вы.уже.видели,.как.перенаправить.этот.ввод.из.файлов..Далее.в.главе.вы.найдете.
гораздо.больше.информации.о.
read
.и.ее.параметрах,.а.также.об.этом.перенаправ-
лении.
Условия
В.bash.предусмотрен.богатый.выбор.условных.конструкций..Многие.условия.на-
чинаются.с.ключевого.слова.
if
..Любая.команда.или.программа,.вызываемая.в.bash,.
может.выполнить.вывод,.но.она.также.всегда.возвращает.значение,.определяющее.
успешное.или.неудачное.выполнение..В.оболочке.это.значение.можно.найти.
в.переменной.
$?
.сразу.после.запуска.команды..Возвращаемое.значение.
0
.считается.
success
.или.
true
;.любое.ненулевое.значение.считается.
error
.или.
false
..В.простейшем.
виде.в.выражении.
if
.используются.именно.эти.значения.
if cmd
then
some cmds
else
other cmds
fi
Использование 0 для true и ненулевого значения для false кардинально отлича-
ет bash от многих языков программирования (C++, Java, Python и др.). Но для
bash это имеет смысл, потому что при неудачном выполнении программы нужно
вернуть код ошибки (чтобы объяснить, как она вышла из строя), тогда как при
успешном завершении кода ошибки не будет, то есть мы получим 0. Это отра-
жает тот факт, что многие вызовы операционной системы возвращают 0, если
все прошло успешно, или –1 (или другое ненулевое значение), если случилась
ошибка. Но в bash есть исключение из этого правила для значений в двойных
скобках (подробнее об этом — позже).
34
Do'stlaringiz bilan baham: |