Для проверки условий используется оператор IF
if [условие] then команды fi | if [условие] then команды1 else команды2 fi |
Условные операторы применяются для проверки результатов поиска файлов
if [grep “abc” file1.dat]
then echo “ файлы, содержащие символы abc, найдены”
else echo “ файлы, содержащие символы abc, не найдены”
fi
Пример. Проверка пустой каталог или нет
# ! / bin / sh
if [ “ ` ls –a D1 ` ” = ” ”] then
echo “ каталог пустой ”
else echo “ каталог не пустой”
fi
Ввод данных осуществляется оператором read список ввода
read a1 a2 a3
Существует возможность передачи параметров в командной строке при вызове сценария
# имя_сценнария параметр1 параметр2 …
# ch1 D1 D2
В сценарии переменная $1 примет значение D1, а переменная $2 – значение D2
D1 и D2 могут означать имена каталогов
Пример. Создать каталог, имя которого передается, как параметр командной строки
# ! /bin /sh файл ch1
$D1=$1
mkdir $D1
echo “ создан каталог ”, $D1
вызов сценария # ./ ch1 rt1 - будет создан каталог rt1
Циклы
Общий формат цикла for
For имя_переменной in list
Do
Команда1
Команда2
……..
Done
Цикл forоднократно выполняет команды, записанные в теле цикла для каждого значения, указанного в списке list.Списокlistможет содержать числа, строки, имена файлов. Командой может быть команда интерпретатора или оператор shell.
Пример
# !/ bin/sh на экран будут выведены имена файлов
for ps in `ls` текущего каталога
do
echo $ps
done
Пример. Создание резервных копий файлов текущего каталога. Резервная копия будет получена копированием файла в файл к имени, которого приписано расширение bak.
# !/ bin/sh
$bk = ”.bak”
for ps in `ls -a`
do
cp $ps $ps$bk
done
если в каталоге есть файлы: a1, a1.txt, b11, b11.doc, то будут созданы файлы
a1.bak, a1.txt.bak, b11.bak, b11.doc.bak
Дата добавления: 2015-08-11; просмотров: 643;