Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы OC UNIX_часть3.doc
Скачиваний:
21
Добавлен:
18.04.2015
Размер:
543.23 Кб
Скачать

3.1.2. Экспорт переменных

Вновь создаваемые переменные локальны, т.е. эффективны только в пределах текущего экземпляра. Для распространения действия значений этих shell-переменных на процессы-потомки они должны быть отмечены как внешние с помощью командыexport, которая является встроенной командойshell'a.

Например,

$ export u

Переменная uпомечается как внешняя и существует вплоть до окончания работыshell’a.

Например,

$ echo $u

UNIX

$ ksh

$ echo $u

UNIX

$ u=AIX

$ echo $u

AIX

$ (Ctrl–D) (Возвращение в родительский

командный процессор)

$ echo $u

UNIX

На основании этого примера можно сделать два вывода:

  • во–первых, чтобы подпроцессор узнал о существовании переменной, нужно экспортировать ее имя;

  • во–вторых, даже когда имя экспортируется, любые присваивания, сделанные в подпроцессоре, остаются локальными для дочернего процесса.

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

Команда exportбез аргументов сообщает все ранее установленные переменные.

3.2. Специальные символы

Shellразличает 4 различных символа клавиатуры, которые трактуются как кавычки:

  • двойные кавычки (");

  • апостроф (‘);

  • символ обратной наклонной черты (\);

  • обратный апостроф (`).

Каждая из этих кавычек имеет специальное и отличное от остальных значение.

3.2.1. Использование двойных кавычек и апострофа

Значение двойных кавычек заключается в том, что любой символ, который имеет для shell'a специальное значение (например,*,?,<,>,>>,|), поставленный в двойные кавычки, утрачивает свой специальный статус. Исключениями здесь являются символ $, обратный апостроф и обратная наклонная черта.

Например,

$ echo *"*"‘*‘

file1 file2 file3 * *

В первом случае shellзаменяет звездочку на имена всех файлов в каталоге. Во втором случае двойные кавычки отменяют специальное значение символа*.

Переменная, которая находится в апострофах, ее значение неподставляется в качестве результата.

Например,

$ var=hello

$ echo $var "$var" ‘$var‘

hello hello $var

$ echo "var = $var"

var = hello

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

3.2.2. Обратные апострофы

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

Например,

$ echo Today is `date`

Today is Mon Oct 31 11:45:24 EST 2013

Например,

$ pwd

$ /home/user1/c/doc

$ HERE=`pwd`

$ echo $HERE

/home/user1/c/doc

$ cd

$ cd $HERE

Например,

$ echo Your current directory is `pwd`

Your current directory is /home/user1

Например,

$ users=`who|wc –l`

$ echo There are $users users logged in

There are 5 users logged in

3.2.3. Обратная наклонная черта

Обратная наклонная черта, поставленная перед символом, ликвидирует его специальное значение для shell'a.

Например,

$ echo $users

$users

$ echo \\

\

  • Остаться в той же строке \с.После вывода последнего аргумента командаechoпереходит к следующей строке. Если необходимо остаться на той же самой строке, после обратного слэша ставиться символ\с.

  • Перемещение на следующую строку \n.Командаechoперемещает курсор в начало следующей строки, если за обратным слэшем стоит символ\n.

Например,

$ echo "one \ntwo \nthree \n \nCount"

one

two

three

Count

  • Перемещение до следующей позиции табуляции \t.Командаechoперемещает курсор на несколько символов вперед в этой же строке, если за обратным слэшем стоит символ\t.

Например,

$ echo "1 \t2 \t3 \t4 \t5"

1 2 3 4 5