![]() | ||||||||||||||||||||||||||||
2. Синтаксис языка shell2.1. КомментарииСтроки, начинающиеся с #, трактуются как комментарии. 2.2. Подстановка результатов выполнения командВыражения можно заключать в обратные кавычки (`). Такие выражения вычисляются в месте использования. Они могут быть, например, частью строк. Пример. Пусть параметром макрокоманды является имя файла с расширением .for. Требуется удалить одноименный файл с расширением .err. name=`ena -n $1` Значение, полученное в результате выполнения команды ena -n $1 присваивается переменной name. Фигурные скобки использованы для выделения аргумента операции перехода от имени к значению. Без них .err приклеилась бы к имени. 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’ом:
Напомним: чтобы получить значения этих переменных, перед ними нужно поставить знак $. Пример: выдать номер текущего процесса: echo $$ 2.4. Специальные переменныеShell'ом используются следующие специальные переменные:
| ||||||||||||||||||||||||||||
Copyright © 2001—2012 Компания «Караван» |
2-й Обыденский пер., д. 12а, Москва, Россия, 119034 Телефон: +7 495 363-2252. Техническая поддержка: +7 495 721-1388 Схема проезда Электронная почта: info@caravan.ru | |||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||