if<ENTER>
команда _1 <ENTER>
…
последняя команда <ENTER>
then<ENTER>
команда _1 <ENTER>
…
последняя команда <ENTER>
fi<ENTER>
Например, shell программа search демонстрирует применение конструкции if... then. Программа search использует команду grep для поиска слова в файле. Если grep выполнилась успешно, то программа отображает найденное слово. После ввода:
cat search<ENTER>
экран будет выглядеть следующим образом:
echo Введите искомое слово и имя файла, в котором будем искать
Read word
Read file
if grep $word $file
then echo $word is in $file
fi
Эта программа отображает вывод команды grep. Если вы хотите сохранить ответ системы на команду grep в вашей программе, то воспользуйтесь файлом /dev/null, изменив командную строку if на следующую:
if grep $word $file > /dev/null<ENTER>
Теперь выполните команду search. Она ответит только сообщением, указанным после команды echo.
Конструкция if... then... else может исполнять альтернативный набор команд, стоящий после else, в случае, если последовательность if является ложью. Формат этой конструкции следующий:
|
|
if<ENTER>
команда_1 <ENTER>
…
последняя команда <ENTER>
then<ENTER>
команда _1 <ENTER>
…
последняя команда <ENTER>
else<ENTER>
команда _1 <ENTER>
…
последняя команда <ENTER>
fi<ENTER>
С помощью этой конструкции вы можете усовершенствовать программу search, так что она будет сообщать вам и найденное слово и то, что слово не найдено. В этом случае программа search будет выглядеть следующим образом:
echo Введите искомое слово и имя файла, в котором будем искать
Read word
Read file
if
grep $word $file > /dev/null
Then
echo $word is in $file
Else
echo $word is NOT in $file
fi
Для команд существуют логические операции:
Логическое и: команда && команда
Логическое или: команда || команда
Логическое не:! команда
Безусловная передача управления
Команда break безусловно останавливает выполнение любого цикла, в котором он встречается и передает управление команде, следующей после ключевых слов done или fi.
Команда continue приведет к тому, что программа немедленно перейдет к следующей итерации цикла while или for без выполнения остальных команд в цикле.
Отладка программы
Для нахождения и корректировки ошибок вам могут понадобиться две опции команды sh:
Sh -v shellprogramname
(печатает вводимые shell строки, как если бы они были прочитаны системой);
Sh -x shellprogramname
(печатает команды и их аргументы по мере их выполнения).