Условное исполнение команд

Операторы условного исполнения команд && и || могут быть применены для управления потоком исполнения команд. Они позволяют исполнять команды в зависимости от успешности выполнения предыдущих команд.

Если оператор && установлен между двумя командами, то вторая из них будет исполнена только в случае успеха предыдущей (пример 10.24).

 

Пример 10.24. Выполнение команды в случае успеха предыдущей команды

 

$ ls /tmp &> /dev/null && cd /tmp

$ pwd

/tmp

 

В примере 10.24 первая команда проверяет наличие каталога, переход в ко- торый осуществляет вторая команда cd /tmp при условии успешного испол- нения первой.

Более изящный вариант выполнения этой же задачи заключается в использо- вании команды test для проверки существования целевого каталога (при- мер 10.25).

 

Пример 10.25. Использование команды test с условными операторами

 

$ [ -d /tmp ] && cd /tmp

$ pwd

/tmp

 

Команда test в примере 10.25 проверяет существование каталога.

Если необходимо выполнять команду в случае неудачного завершения работы другой команды, удобно применять оператор ||. Например, требуется перейти в каталог d1. В случае отсутствия этот каталог необходимо создать и перейти в него. Эту задачу можно решить следующим образом (пример 10.26).


 

Пример 10.26. Выполнение команды при неудаче предыдущей команды

 

$ [ -d d1 ] || mkdir d1 ; cd d1

$ pwd

/tmp/d1

 

Если каталог отсутствует (пример 10.26), то он создается.

Оболочка предоставляет также специальную команду if, которая позволяет управлять последовательностью исполнения целых блоков команд. В качест- ве примера предположим, что требуется обеспечить выход из некоторого сценария с ошибкой, если в командной строке установлено отличное от еди- ницы число аргументов командной строки. При этом команда должна сооб- щать об ошибке и выдавать подсказку о правильном варианте ее использова- ния (пример 10.27).

 

Пример 10.27. Команда if

 

#!/bin/bash

if [ $# -ne 1 ] then

cat <<- ERR

Недостаточно аргументов. Использование:

if.sh file

Аргумент file должен быть обычным файлом.


 

fi

ls -l $1


ERR

exit 1


 

Команда if исполняет блок команд после команды then, только в случае по- лучения нулевого кода возврата команды, указанной в качестве ее аргумента. В данном случае аргумент команды if — это команда test, которая проверя- ет количество аргументов сценария. Если количество аргументов не равно единице, то выполняется блок операторов после then до команды fi, закан- чивающей if.

Конструкция cat <<- ERR — это "here document". Она позволяет указывать целый блок данных непосредственно в теле сценария, передавая его в данном случае в стандартный поток ввода команде cat для вывода на экран. Блок


 

данных ограничен строкой ERR. В этом примере используется оператор <<-

вместо << для игнорирования табуляций перед блоком данных. Результат — в примере 10.28.

 

Пример 10.28. Результаты работы программы с командой if

 

$ ./if.sh

Недостаточно аргументов. Использование:

if.sh file

Аргумент file должен быть обычным файлом.

$ ./if.sh if.sh

-rwxr--r-- 1 user1 users 172 Oct 8 19:34 if.sh

 

Команда if допускает использование команды elif для выполнения допол- нительной проверки (пример 10.29).

 

Пример 10.29. Команда elif

 

#!/bin/bash

if [ $# -ne 1 ] then

cat <<- ERR

Недостаточно аргументов. Использование:

if.sh file

Аргумент file должен быть обычным файлом.

ERR

exit 1 elif [ ! -f $1 ] then


 

 

fi

ls -l $1


echo -n 'Тип файла ' file $1

exit 1


 

Если аргументом задан специальный файл, то выводится его тип (при-

мер 10.30).


 

Пример 10.30. Проверка работы сценария с elif

 

$ ./if.sh .

Тип файла .: directory

 

В команде if можно также использовать else для указания блока операто- ров, которые должны исполняться в случае, если предыдущие проверки не закончились успехом (пример 10.31).

 

Пример 10.31. Команда else

 

#!/bin/bash

 

 

if [ $# -ne 1 ] then

cat <<- ERR

Недостаточно аргументов. Использование:

if.sh file

Аргумент file должен быть обычным файлом.

ERR

exit 1 elif [ ! -f $1 ] then


 

 

else fi


echo -n 'Тип файла ' file $1

exit 1 ls -l $1









Дата добавления: 2015-06-12; просмотров: 1046;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.