Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операторы и команды






Язык shell по своим возможностям приближается к высокоуровневым алгоритмическим языкам программирования. Операторы языка shell позволяют создавать собственные программы. В программах могут использоваться любые команды командного языка, в том числе и рассмотренные в данном пособии.

Такие программы, а также командные файлы, содержащие их, называют shell-процедурами или shell-файлами. От обычных программ они отличаются способом их обработки. Процедура не требует компиляции, построения объектного файла и последующей компоновки, так как shell, обрабатывающий их, является транслятором интерпретирующего, а не компилирующего типа. Процедура - аналог командного файла в MS-DOS, но с более широкими возможностями. Здесь же отметим, что рассмотренные ниже операторы могут быть использованы как в теле процедуры, так и выполнены независимо как обычные команды в диалоговом режиме.

Текст процедуры набирается как обычный текстовый файл. Для этих целей при создании большой процедуры целесообразно использовать редактор vi. Для изучения принципов на примере простейших процедур можно использовать один из способов создания пустых файлов с последующим заполнением командами (рассматривали выше) или команду cat.

Проверенный и отлаженный shell-файл может быть вызван на исполнение, например, следующим способом:

$ chmod u+x shfil

$ shfil

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

Можно использовать также и следующий способ:

$ sh -c " shfil"

или

$ sh shfil

В этих случаях по команде sh вызывается вторичный интерпретатор shell, и в качестве аргумента ему передается командная строка, содержащая имя файла процедуры shfil, находящегося в текущем каталоге. Однако, этот способ накладывает ограничения на исполнение некоторых команд ОС управления процессами (например nice – см. ниже).

Процедуре при ее запуске могут быть переданы аргументы. В общем случае командная строка вызова процедуры имеет следующий вид:

$ имя_процедуры $1 $2...$9

Каждому из девяти первых аргументов командной строки в тексте процедуры соответствует один из позиционных параметров: $1, $2,..., $9 соответственно. Параметр $0 соответствует имени самой процедуры, т.е. первому полю командной строки. К каждому из 10 первых аргументов можно обратиться из процедуры, указав номер его позиции.

Некоторые вспомогательные операторы:

echo - вывод сообщений из текста процедуры на экран.

$ echo " начало строки

> продолжение строки" или единой строкой

$

# - для обозначения строки комментария в процедуре. (Строка не будет обрабатываться shell-ом).

banner - вывод сообщения на экран заглавными буквами (например для идентификации следующих за ним сообщений).

$banner 'hello panda! '

HELLO PANDA!

$

Простейший пример. Здесь оператор echo выполняется в командном режиме.

$shfil p1 pp2 petr

$echo $3

petr

$

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

set - присвоить значения позиционным параметрам;

Пример.

$set a1 ab2. abc

$echo $1 $2

a1 ab2 - в этом примере параметры указываются в явном виде.

Количество позиционных параметров может быть увеличено до необходимого значения путем " сдвига" их в командной строке влево на одну позицию с помощью команды shift без аргументов:

shift - сдвинуть позиционные параметры влево на одну позицию

После выполнения shift прежнее значение параметра $1 теряется, значение $1 приобретает значение $2, значение $2 - значение $3 и т.д.

Продолжение предыдущего примера:

$shift

$echo $1 $2

ab2 abc

$

В UNIX при написании операторов важное значение отводится кавычкам (апострофам):

'...' - для блокирования специальных символов, которые могут быть интерпретированы как управляющие;

"..." - блокирование наиболее полного набора управляющих символов или указания того, что здесь будет обрабатываться не сам аргумент, а его значение;

`...` - (обратные кавычки или знак ударения) для указания того, что они обрамляют команду и здесь будет обрабатываться результат работы этой команды (подстановка результатов работы указанной команды).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.