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
... не зависимый от языка способ создания кода и привязки его к запросам Web-страниц, — .NET Web Forms — управляемую событиями программную модель взаимодействия с элементами управления. Она делает программирование Web-страниц аналогичным программированию форм Visual Basic. ASP.NET содержит развитые средства управления сеансами и функции защиты. Она надежнее, и производительность ее значительно выше ...
... "проверки заразности" (taint checks) в Perl? Как их включить? Как мы видели, одна из наиболее часто встречающихся проблем с безопасностью при программировании CGI - передача оболочке ОС пользовательских переменных без их проверки. Perl предлагает механизм проверки "заразности", который не позволяет этого делать. Любая переменная, которая проинициирована данными за пределами программы (включая ...
льный для каждого маршрута): "c: Курсовая моя < название маршрута > .txt" В таких файлах информация представлена например в следующем виде: автобус, 512 водитель, Батуров П.П. кондуктор, Иванова И.И. автобус, 513 водитель, Рябова Т.И. кондуктор, Шишкова Ю.М. автобус, 514 водитель, Продидж Н.Н. кондуктор, Мартысюк С.С. остановка, , 405, 4680 остановка, , 915, 2730 остановка, , ...
... интерфеса и интерфейса локольной сети · Предложение о выборе вариантов загрузки При этом возможен вариант запгрузки как с SCSI устройства (диск, CDROM, лента, …) так и через локальную сеть. Загрузочный диск должен быть предварительно сконфигурирован. Так как обьем Boot ROM не может быть большим, в его задачи входит загрузка вторичного загрузчика ...
0 комментариев