Интерпретатор командного языка shell
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферати українською, реферат по физике
| Добавил(а) на сайт: Дубинкин.
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата
2.3. Переменные и подстановка их значений
Все переменные в языке shell - текстовые. Их имена должны начинаться с буквы и состоять из латинских букв, цифр и знака подчеркивания (_). Чтобы воспользоваться значением переменной, надо перед ней поставить символ $. Использование значения переменной называется подстановкой.
Различается два класса переменных: позиционные и с именем. Позиционные переменные - это аргументы командных файлов, их именами служат цифры: $0 - имя команды, $1 - первый аргумент и т.д. Значения позиционным переменным могут быть присвоены и командой set (см. Специальные команды). Пример. После вызова программы на shellе, хранящейся в файле ficofl:
ficofl -d / *.forзначением $0 будет ficofl, $1 - -d, $2 - /, $3 - *.for, значения остальных позиционных переменных будут пустыми строками. Заметим, что если бы символ * при вызове ficofl не был экранирован, в качестве аргументов передались бы имена всех фортранных файлов текущей директории.
Еще две переменные хранят командную строку за исключением имени команды: $@ эквивалентно $1 $2 ..., а $* - "$1 $2 ...". Начальные значения переменным с именем могут быть установлены следующим образом:
= [ = ] ...Не может быть одновременно функции (см. Управляющие конструкции) и переменной с одинаковыми именами. Для подстановки значений переменных возможны также следующие конструкции:
${}если значение определено, то оно подставляется. Скобки применяются лишь если за следует символ, который без скобок приклеится к имени.
${:-}если определена и не является пустой строкой, то подставляется ее значение; иначе подставляется .
${:=}если не определена или является пустой строкой, ей присваивается значение ; после этого подставляется ее значение.
${:?}если определена и не является пустой строкой, то подставляется ее значение; иначе на стандартный вывод выводится и выполнение shellа завершается. Если опущено, то выдается сообщение "parameter null or not set".
${:+}если определена и не является пустой строкой, то подставляется ; иначе подставляется пустая строка.
Пример: если переменная d не определена или является пустой строкой, то выполняется команда pwd
echo ${d:-`pwd`}Следующие переменные автоматически устанавливаются shell'ом:
# | количество позиционных параметров (десятичное) |
- | флаги, указанные при запуске shellа или командой set |
? | десятичное значение, возвращенное предыдущей синхронно выполненной командой |
$ | номер текущего процесса |
! | номер последнего асинхронного процесса |
@ | эквивалентно $1 $2 $3 ... |
* | эквивалентно "$1 $2 $3 ..." |
Напомним: чтобы получить значения этих переменных, перед ними нужно поставить знак $. Пример: выдать номер текущего процесса:
echo $$ 2.4. Специальные переменныеShell'ом используются следующие специальные переменные:
HOME | директория, в которую пользователь попадает при входе в систему или при выполнении команды cd без аргументов |
PATH | список полных имен каталогов, в которых ищется файл при указании его неполного имени. |
PS1 | основная строка приглашения (по умолчанию $) |
PS2 |
дополнительная строка приглашения (по умолчанию >); в интерактивном режиме перед вводом команды
shell'ом выводится основная строка приглашения. Если нажата клавиша new_line, но для завершения команды требуется дальнейший ввод, то выводится дополнительная строка приглашения |
IFS | последовательность символов, являющихся разделителями в командной строке (по умолчанию это , и ) |
Простая команда - это последовательность слов, разделенная пробелами. Первое слово является именем команды, которая будет выполняться, а остальные будут переданы ей как аргументы. Имя команды передается ей как аргумент номер 0 (т.е. имя команды является значением $0). Значение, возвращаемое простой командой - это ее статус завершения, если она завершилась нормально, или (восьмеричное) 200+статус, если она завершилась аварийно.
Список - это последовательность одного или нескольких конвейеров, разделенных символами ;, &, && или || и быть может заканчивающаяся символом ; или &. Из четырех указанных операций ; и & имеют равные приоритеты, меньшие, чем у && и ||. Приоритеты последних также равны между собой. Символ ; означает, что конвейеры будут выполняться последовательно, а & - параллельно. Операция && (||) означает, что список, следующий за ней будет выполняться лишь в том случае, если код завершения предыдущего конвейера нулевой (ненулевой).
Команда - это либо простая команда, либо одна из управляющих конструкций. Кодом завершения команды является код завершения ее последней простой команды.
3.1. Цикл ДЛЯ for [ in ] do doneЕсли часть in опущена, то это означает in "$@" ( то есть in $1 $2 ... $n). Пример. Вывести на экран все фортранные файлы текущей библиотеки:
for f in *.for do cat $f done 3.2. Оператор выбора case $ in | ... ) ;; . . . esacОператор выбора выполняет , соответствующий первому , которому удовлетворяет . Форма шаблона та же, что и используемая для генерации имен файлов. Часть | шаблон... может отсутствовать.
Пример. Определить флаги и откомпилировать все указанные файлы.
# инициализировать флагflag=# повторять для каждого аргументаfor ado case $a in # об(r)единить флаги, разделив их пробелами -[ocSO]) flag=$flag' ' $a ;; -*) echo 'unknown flag $a' ;; # компилировать каждый исходный файл и сбросить флаги *.c) cc $flag $a; flag= ;; *.s) as $flag $a; flag= ;; *.f) f77 $flag $a; flag= ;; # неверный аргумент *) echo 'unexpected argument $a' ;; esacdone 3.3. Условный оператор. if then [ elif then ] . . . [ else ] fiВыполняется и, если код его завершения 0, то выполняется , иначе - и, если и его код завершения 0, то выполняется . Если же это не так, то выполняется . Части elif и else могут отсутствовать.
3.4. Цикл ПОКА while do doneДо тех пор, пока код завершения последней команды есть 0, выполняются команды . При замене служебного слова while на until условие выхода из цикла меняется на противоположное.
В качестве одной из команд может быть команда true (false). По этой команде не выполняется никаких действий, а код завершения устанавливается 0 (-1). Эти команды применяются для организации бесконечных циклов. Выход из такого цикла можно осуществить лишь по команде break (см. Специальные команды).
3.5. Функции () { ; }Определяется функция с именем . Тело функции - , заключенный между { и }.
3.6. Зарезервированные словаСледующие слова являются зарезервированными:
Рекомендуем скачать другие рефераты по теме: bestreferat, сочинение.
Категории:
Предыдущая страница реферата | 1 2 3 | Следующая страница реферата