Условные операторы
Оператор if ... then
Команда if говорит shell программе, что нужно выполнить последовательность команд после then, если последняя команда в списке команд конструкции if выполнилась успешно. Конструкции if заканчиваются ключевым словом fi.
Общий формат конструкции if:
if<CR>
command_1<CR>
. . . last command<CR>
then<CR>
command_1<CR>
. . . last command<CR>
fi<CR>
Например, shell программа search демонстрирует применение конструкции if ... then. Программа search использует команду grep для поиска слова в файле. Если grep выполнилась успешно, то программа отображает найденное слово. Экран будет выглядеть следующим образом:
$ cat search<CR>
echo Type in the word and the file name. read word file if grep $word $file then echo $word is in $file fi $
Эта программа отображает вывод команды grep. Если вы хотите сохранить ответ системы на команду grep в вашей программе, то воспользуйтесь файлом /dev/null, изменив командную строку if на следующую:
if grep $word $file > /dev/null<CR>
Теперь выполните команду search. Она ответит только сообщением, указанным после команды echo.
Конструкция if ... then ... else может исполнять альтернативный набор команд, стоящий после else, в случае, если последовательность if является ложью. Формат этой конструкции следующий:
if<CR>
command_1<CR>
. . . last command<CR>
.linthen<CR>
command_1<CR>
. . . last command<CR>
else<CR>
command_1<CR>
. . . last command<CR>
fi<CR>
С помощью этой конструкции вы можете усовершенствовать программу search, так что она будет сообщать вам и найденное слово и то, что слово не найдено. В этом случае программа search будет выглядеть следующим образом:
$ cat search<CR>
echo Type in the word and the file name. read word file if grep $word $file > /dev/null then echo $word is in $file else echo $word is NOT in $file fi $
Команда test
Команда test используется для организации цикла. Она проверяет на истинность определенные условия и полезна для организации условных конструкций. Если условие истинно, то цикл будет продолжен. Если условие ложно, то цикл завершится и будет выполняться следующая команда. Некоторые примеры использования команды test: