Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"

Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"

#!/bin/bash

ARGS=1 # Ожидаемое число аргументов.

E_BADARGS=65 # Код завершения, если число аргументов меньше ожидаемого.

test $# -ne $ARGS && echo "Порядок использования: `basename $0` $ARGS аргумент(а)(ов)" && exit $E_BADARGS

# Если проверка первого условия возвращает true (неверное число аргументов),

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

# Строка ниже выполняется только тогда, когда проверка выше не проходит.

# обратите внимание на условие "-ne" -- "не равно" (прим. перев.)

echo "Сценарию передано корректное число аргументов."

exit 0

# Проверьте код завершения сценария командой "echo $?".

Конечно же, с помощью И-списка можно присваивать переменным значения по-умолчанию.

arg1=$@ # В $arg1 записать аргументы командной строки.

[ -z "$arg1" ] && arg1=DEFAULT

# Записать DEFAULT, если аргументы командной строки отсутствуют.

ИЛИ-список

command-1 || command-2 || command-3 || ... command-n

Каждая последующая команда, в таком списке, выполняется только тогда, когда предыдущая команда вернула код завершения false (не ноль). Если какая-либо из команд возвращает true (ноль), то исполнение списка команд в этом месте завершается, т.е. следующие далее команды не выполняются. Очевидно, что "ИЛИ-списки" имеют смысл обратный, по отношению к "И-спискам"

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Пример: упрощение с помощью макросов

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Пример: упрощение с помощью макросов В листинге 9.3 установка и снятие блокировки занимали шесть строк кода. Мы должны выделить место под структуру, инициализировать ее и затем вызвать fcntl. Программы можно упростить, если определить следующие семь макросов, которые взяты


6.7 Еще один пример таблицы маршрутизации хоста

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

6.7 Еще один пример таблицы маршрутизации хоста Иногда таблицы маршрутизации хостов не столь просты. Рассмотрим, например, два маршрутизатора подсети 128.121.50.0 (см. рис. 6.5). Второй маршрутизатор управляет небольшой локальной сетью с несколькими рабочими станциями. Рис. 6.5.


Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя #!/bin/bash# timeout.sh# Автор: Stephane Chazelas,# дополнен автором документа.INTERVAL=5 # предел времени ожиданияtimedout_read() { timeout=$1 varname=$2 old_tty_settings=`stty -g` stty -icanon min 0 time ${timeout}0 eval read $varname # или просто read $varname


Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@

Из книги автора

Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@ #!/bin/bash# Вызовите сценарий с несколькими аргументами, например: "один два три".E_BADARGS=65if [ ! -n "$1" ]then echo "Порядок использования: `basename $0` argument1 argument2 и т.д." exit $E_BADARGSfiechoindex=1echo "Список аргументов в переменной "$*":"for arg in


Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

Из книги автора

Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд #!/bin/bash# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.NUMBERS="9 7 3 8 37.53"for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53do echo -n "$number "doneecho exit 0Более сложный пример использования подстановки


Пример 10-25. Создание меню с помощью case

Из книги автора

Пример 10-25. Создание меню с помощью case #!/bin/bash# Грубый пример базы данныхclear # Очистка экранаecho " Список"echo " ------"echo "Выберите интересующую Вас персону:"echoecho "[E]vans, Roland"echo "[J]ones, Mildred"echo "[S]mith, Julie"echo "[Z]ane, Morris"echoread personcase "$person" in# Обратите внимание: переменная взята в кавычки.


Пример 11-4. Ввод многострочного текста с помощью read

Из книги автора

Пример 11-4. Ввод многострочного текста с помощью read #!/bin/bashechoecho "Введите строку, завершающуюся символом , и нажмите ENTER."echo "Затем введите вторую строку, и снова нажмите ENTER."read var1 # При чтении, символ "" экранирует перевод строки. # первая строка # вторая


Пример 11-14. Изменение значений позиционных параметров (аргументов)

Из книги автора

Пример 11-14. Изменение значений позиционных параметров (аргументов) #!/bin/bashvariable="one two three four five"set -- $variable# Значения позиционных параметров берутся из "$variable".first_param=$1second_param=$2shift; shift # сдвиг двух первых параметров.remaining_params="$*"echoecho "первый параметр = $first_param" # oneecho "второй


Пример 16-2. Перенаправление stdout с помощью exec

Из книги автора

Пример 16-2. Перенаправление stdout с помощью exec #!/bin/bash# reassign-stdout.shLOGFILE=logfile.txtexec 6>&1 # Связать дескр. #6 со stdout. # Сохраняя stdout.exec > $LOGFILE # stdout замещается файлом "logfile.txt".# ----------------------------------------------------------- ## Весь вывод от команд, в данном блоке, записывается в файл


Пример 24-1. Проверка аргументов командной строки с помощью "И-списка"

Из книги автора

Пример 24-1. Проверка аргументов командной строки с помощью "И-списка" #!/bin/bash# "И-список"if [ ! -z "$1" ] && echo "Аргумент #1 = $1" && [ ! -z "$2" ] && echo "Аргумент #2 = $2"then echo "Сценарию передано не менее 2 аргументов." # Все команды в цепочке возвращают true.else echo "Сценарию передано менее 2


Пример 24-3. Комбинирование "ИЛИ-списков" и "И-списков"

Из книги автора

Пример 24-3. Комбинирование "ИЛИ-списков" и "И-списков" #!/bin/bash# delete.sh, утилита удаления файлов.# Порядок использования: delete имя_файлаE_BADARGS=65if [ -z "$1" ]then echo "Порядок использования: `basename $0` имя_файла" exit $E_BADARGS # Если не задано имя файла.else file=$1 # Запомнить имя файла.fi[ ! -f "$file" ]


Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero

Из книги автора

Пример 28-2. Создание файла подкачки (swapfile), с помощью /dev/zero #!/bin/bash# Создание файла подкачки.# Этот сценарий должен запускаться с правами root.ROOT_UID=0 # Для root -- $UID 0.E_WRONG_USER=65 # Не root?FILE=/swapBLOCKSIZE=1024MINBLOCKS=40SUCCESS=0if [ "$UID" -ne "$ROOT_UID" ]then echo; echo "Этот сценарий должен запускаться с правами