Skip to main content

Условный оператор if

Этот оператор осуществляет выбор между альтернативными действиями.

Простейшая форма - if   then:

if   условие

then

список команд

fi

В общем случае оператор if имеет структуру:

if   условие

then

список команд 1

elif   условие

then   список команд 2

elif ...

...

else

список команд N

fi

elif сокращенный вариант от else if.

Если выполняется условие, т.е. условие истинно, то выполняется список команд, иначе он пропускается. Обратите внимание, что структура обязательно завершается служебным словом fi.

Создадим командный файл del, который будет удалять файл или каталог, имя которого вводится через параметр.

Командный файл del:

if [ -d $1 ] (проверяем значение параметра является каталогом?)

then

echo "Это каталог. Удалить с файлами (Y)/ Не удалять (N)"

read a

if [ a = "y" ]

then

rm -r - f $1 (-f удаляет файлы без предупреждения)

fi

else

echo "Это файл. Удалить (Y)/ Не удалять (N)"

read a

if [ a = "y" ]

then

rm $1

fi

fi

В данном командном файле сначала идет проверка, является ли введенное через параметр имя, каталогом. Если да, то пользователь решает удалять или не удалять этот каталог. Введенное пользователем значение записывается в переменную а, затем осуществляется проверка, если значение а = «у», то производится удаление каталога.

В противном случае (если введено имя файла) пользователь получает уведомление о том, что это файл, и сообщает удалять его или нет. Если значение а = «у», то производится удаление файла.

Создадим командный файл, который выдает на экран справку о числе файлов, созданных указанным пользователем (через параметр). Предусмотреть возможность удаления этих файлов после выдачи сообщения пользователю.

Командный файлdelusrfile:

find /home -type f -user $1 > ~/findlist (поиск файлов, созданных указанным пользователем, запись списка файлов в findlist)

echo количество файлов, созданных пользователем $1:

wc -l ~/findlist (подсчет кол-ва строк в файле findlist)

echo удалить эти файлы? (y - да , n - нет)

read a

if [ a = "y" ]

then

cat ~/findlist | xargs -e rm

fi

(считываются строки из findlist и передаются команде xargs, назначение которой строить и выполнять команду, поступившую на вход. Ключ -е позволяет считывать не весь файл целиком, а построчно. Таким образом, строка, содержащая полное имя файла, считывается из findlist и передается команде rm, удаляющей этот файл).