Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс_лекций_ОС_П+И_2012.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
426.42 Кб
Скачать

Shell – сценарии

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

В первой строке файла сценария содержится строка # ! / bin / sh

Система получает указание, где следует искать интерпретатор Bourne shell. Далее записываются команды для выполнения действий. Сценарий просматривается интерпретатором в направлении сверху вниз, команды выполняются последовательно, если нет условных операторов. Строка комментария начинается с символа #, эта строка будет игнорирована интерпретатором.

Сценарий создается текстовым редактором, для выполнения сценария для файла сценария следует установить право «выполнение».

chmod u + x <имя_сценария>

для запуска сценария следует ввести имя сценария в командной строке

# ./ <имя_сценария>

SHELL – сценарии создаются на языке программирования SHELL. В сценариях используются переменные, условные, циклические операторы, функции.

Пример 1. Составить сценарий, который позволяет создать каталог fd и скопировать в него все файлы текущего каталога с суффиксом tx.

# ! / bin / sh

mkdir fd

cp *.tx /fd

Пример 2. Составить сценарий, который позволяет переместить файлы текущего каталога с суффиксом tx в каталог fd и удалить их.

# ! / bin / sh

mv *.tx /fd

rm *.tx

Переменные могут быть локальными и переменными среды. Локальные переменные определены в сценарии и действуют в пределах сценария.

Имя_переменой = значение

Значением переменной может быть число, имя файла, путь к файлу, строка символов. Все переменные воспринимаются интерпретатором, как строка. Перед именем переменной ставиться знак $.

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

HOME

#cd $HOME

-

Устанавливает домашний каталог пользователя

PATH

PATH =$HOME/bin/…./home

-

Указывает путь к программе сценария

EDITOR

-

Определяет имя редактора по умолчанию

TZ

-

Определяет часовой пояс

LOGNAME

-

Регистрационное имя пользователя

Команда echo отображает на экране указанную строку текста. Общий формат

echo строка

Строка заключается в двойные кавычки, можно использовать управляющий символ /n – переход на новую строку.

echo “ all ready “

Для вывода на экран значения переменной используется команда echo

Пример

$gred = example

echo $gred

echo “ значение переменной ”, $gred, “ выведено на экран”

Чтобы перенаправить результат работы команды echo в файл, используется оператор >

echo “ эта строка будет записана в файл” > myfile

в данном случае содержимое файла будет заменено. Оператор >> позволяет добавить строку в конец файла

echo “Отчет создал пользователь ” . $LOGNAME . `date` >> myfile

команда сценария echo $? отображает на экране код завершения команды, выполненной в сценарии. 0 – завершение правильное, либо код ошибки.

Логические операторы

-a - логическое умножение AND

-o - логическое сложение OR

! - отрицание NOT

Пример. Проверка права «чтения» файла abc.dat

ls –l abc.dat

test [-w abc.dat]

echo $?

На экран будет выведена 1, если есть право чтения -rw r-- r--

Пример. Проверка права «чтения» файла abc.dat и abc1.dat

ls –l abc*.dat

test [-w abc.dat –a abc1.dat]

echo $?

Пример. Проверка права «чтения» файла abc.dat или abc1.dat

ls –l abc*.dat

test [-w abc.dat –о abc1.dat]

echo $?

Есть возможность проверять строки и числа, как правило, для проверки вводимых пользователем данных, например пароля.

[cтрока1 = строка2]

echo $?

[-z строка] - строка пустая

[-n строка] - строка непустая

Для проверки условий используется оператор 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