2.4. Командные файлы.

Для того, чтобы текстовый файл можно было использовать как команду, существует

несколько возможностей.

Пусть с помощью редактора создан файл с именем "cmd", содержащий одну строку

следующего вида:

date; pwd; ls

Можно вызвать shell как команду, обозначаемую "sh", и передать ей файл "cmd",

как аргумент или как перенаправленный вход, т.е.

$ sh cmd

или

$ sh <cmd

В результате выполнения любой из этих команд будет выдана дата, затем имя

текущего каталога, а потом содержимое каталога.

Более интересный и удобный вариант работы с командным файлом - это превратить

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

кода защиты. Для этого надо разрешить выполнение этого файла.

Например,

chmod 711 cmd

сделает код защиты "rwx__x__x". Тогда простой вызов

cmd

приведет к выполнению тех же трех команд.

Результат будет тот же, если файл с содержимым

date; pwd; ls

представлен в виде:

date

pwd

ls

так как переход на другую строку также является разделителем в

последовательности команд.

Таким образом, выполняемыми файлами могут быть не только файлы, полученные в

результате компиляции и сборки, но и файлы, написанные на языке shell. Их

выполнение происходит в режиме интерпретации с помощью shell-интерпретатора

2.5 Отладка командных файлов

В SHELL используются два механизма отладки командных файлов.

Первый из них: set -v выводит строки командного файла по мере их чтения. Этот

режим применяется при поиске синтаксических ошибок. Для его использования не

требуется производить модификацию командного файла, например:

sh -v proc... здесь proc - имя командного файла. Ключ -v может использоваться

вместе с ключом -n, предотвращающим выполнение следующих за ним команд (команда

set -n блокирует терминал до тех пор, пока не вводится признак конца файла EOF).

Команда set -х выводит команды по мере их выполнения, причём на терминал

выводятся строки программы и на место переменных подставляются их значения. Для

отмены ключей -x и -v можно воспользоваться командой set - а для установки -

присвоить соответствующее значение макропеременной.

3. СРЕДА SHELL (ПЕРЕМЕННЫЕ И ПАРАМЕТРЫ)

На языке shell можно писать командные файлы и с помощью команды "chmod" делать

их выполняемыми. После этого они ни чем не отличаются от прочих команд ОС UNIX.

3.1. shell-переменные

Имя shell-переменной - это начинающаяся с буквы последовательность букв, цифр и

подчеркиваний.

Значение shell-переменной - строка символов.

То, что в shell всего два типа данных: строка символов и текстовый файл, с одной

стороны, позволяет легко вовлекать в программирование конечных пользователей,

никогда ранее программированием не занимавшихся, а с другой стороны, вызывает

некий внутренний протест у многих программистов, привыкших к существенно

большему разнообразию и большей гибкости языковых средств.

Однако интересно наблюдать то, как высококлассные программисты, освоившись с

"правилами игры" shell, пишут на нем программы вомного раз быстрее, чем на Си,

но, что особенно интересно, в ряде случаев эти программы работают даже быстрее,

чем реализованные на Си.

Имя переменной аналогично традиционному представлению об идентификаторе, т.е.

именем может быть последовательность букв, цифр и подчеркиваний, начинающаяся с

буквы или подчеркивания.

Для присваивания значений переменным может использоваться оператор присваивания

"=".

var_1=13 - "13" - это не число, а строка из двух цифр.

var_2="ОС UNIX" - здесь двойные кавычки (" ") необходимы, так как в строке есть

пробел.

Возможны и иные способы присваивания значений shell-переменным. Так например

запись,

DAT=`date`

приводит к тому, что сначала выполняется команда "date" (обратные кавычки

говорят о том, что сначала должна быть выполнена заключенная в них команда), а

результат ее выполнения, вместо выдачи на стандартный выход, приписывается в

качестве значения переменной, в данном случае "DAT".

Можно присвоить значение переменной и с помощью команды "read", которая

обеспечивает прием значения переменной с (клавиатуры) дисплея в диалоговом

режиме. Обычно команде "read" в командном файле предшествует команда "echo",

которая позволяет предварительно выдать какое-то сообщение на экран. Например:

echo -n "Введите трехзначное число:"

read x

При выполнении этого фрагмента командного файла, после вывода на экран сообщения

Введите трехзначное число:

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

ввели, скажем, "753" то это и станет значением переменной "x".

Одна команда "read" может прочитать (присвоить) значения сразу для нескольких

переменных. Если переменных в "read" больше, чем их введено (через пробелы),

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

переменных в команде "read", то лишние игнорируются.

При обращении к shell-переменной необходимо перед именем ставить символ "$". Так

команды

echo $var_2

echo var_2

выдадут на экран

ОС UNIX

var_2


Информация о работе «Программирование на Shell»
Раздел: Информатика, программирование
Количество знаков с пробелами: 39235
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
89611
3
4

... не зависимый от языка способ создания кода и привязки его к запросам Web-страниц, — .NET Web Forms — управляемую событиями программную модель взаимодействия с элементами управления. Она дела­ет программирование Web-страниц аналогичным программи­рованию форм Visual Basic. ASP.NET содержит развитые сред­ства управления сеансами и функции защиты. Она надежнее, и производительность ее значительно выше ...

Скачать
9700
0
0

... "проверки заразности" (taint checks) в Perl? Как их включить? Как мы видели, одна из наиболее часто встречающихся проблем с безопасностью при программировании CGI - передача оболочке ОС пользовательских переменных без их проверки. Perl предлагает механизм проверки "заразности", который не позволяет этого делать. Любая переменная, которая проинициирована данными за пределами программы (включая ...

Скачать
43471
0
3

льный для каждого маршрута): "c: Курсовая моя < название маршрута > .txt" В таких файлах информация представлена например в следующем виде: автобус, 512 водитель, Батуров П.П. кондуктор, Иванова И.И. автобус, 513 водитель, Рябова Т.И. кондуктор, Шишкова Ю.М. автобус, 514 водитель, Продидж Н.Н. кондуктор, Мартысюк С.С. остановка, , 405, 4680 остановка, , 915, 2730 остановка, , ...

Скачать
374863
43
0

... интерфеса и интерфейса локольной сети ·     Предложение о выборе вариантов загрузки При этом возможен вариант запгрузки как с SCSI устройства (диск, CDROM, лента, …) так и через локальную сеть. Загрузочный диск должен быть предварительно сконфигурирован. Так как обьем Boot ROM не может быть большим, в его задачи входит загрузка вторичного загрузчика ...

0 комментариев


Наверх