Введение в Unix

         

Переменные в C-Shell


Подобно языку Shell, C-Shell имеет встроенные переменные, установка которых может влиять на поведение интерпретатора. Установка значения переменной производится командой set, имеющей следующий синтаксис:

set <переменная> = <значение>

Рассмотрим наиболее употребительные встроенные переменные.

Переменная history задает количество предыдущих команд, сохраняемых в буфере истории, например:

set history = 30.

Переменная path устанавливает каталоги для поиска команд. Список каталогов, разделенных пробелами, заключается в скобки:

set path = (/bin /usr/ucb $Home/bin .)

Переменная prompt задает строку подсказки перед выполнением очередной команды. При этом символы \ ! (обратный слэш и восклицательный знак) в строке подсказки задают текущий номер команды, используемый в механизме истории.

Пример:

% set prompt = "ed \ ! >" ed5> history . . . . . . . . 5 history

Переменная Shell указывает, какой интерпретатор вы хотите в качестве начального. Возможные значения: /bin/csh или /bin/sh.

Булевская переменная noclobber используется для защиты уже существующего файла от случайной потери путем перезаписи в него при перенаправлении стандартного вывода. Для этого ее надо установить в значение "истина":

% set noclobber % fgrep ounds /usr/dict/words > shells Shells: File exists - (файл с именем shells уже существует и его текущая версия была бы потеряна). Если вы тем не менее хотите перезаписать этот файл, используйте перенаправление с восклицательным знаком (>!):




% fgrep ounds /usr/dict/words >! shells

В этом случае перезапись состоится. Установка булевской переменной в противоположное значение "ложь" выполняется командой:

unset noclobber.

Переменные home и cwd, устанавливаемые автоматически, равны полным именам собственного и текущего каталогов соответственно.

Переменная status автоматически возвращает нулевое значение, если текущая команда завершена без ошибок. Ненулевое значение указывает ошибочное завершение.

Переменная argv содержит аргументы командной строки с нумерацией аргументов следующим образом: argv [0] - команда, argv [1] - первый аргумент и так далее (как в языке C).

Доступ к переменным обеспечивается ссылкой на имена с предшествующим знаком $, например, $cwd $argv [0] и т.д.

Посмотреть текущие значения встроенных переменных можно командой set без параметров:

% set

Пользователь может определить свои переменные типа строка знаков. Например:

% set wd = `pwd` % echo $wd /users/sys/docs.

Здесь результат выполнения команды pwd (строка полного имени рабочего каталога пользователя) присвоен переменной wd, значение которой проверено командой echo.

Кроме строковых переменных можно определить числовые переменные, принимающие значения типа целое, вещественное или булевское. Целое и вещественное значение начинающееся с нуля, считается восьмеричным, иначе - десятичным. Установка значения числовой переменной выполняется командой @ (аналог set для строковых переменных).

Пример:

% @ sum = (1 + 4) % echo $sum 5

В общем случае синтаксис команды @ такой:

@ <переменная> <C-операция> <C-выражение>,

где C-операция - один из операторов присваивания, принятых в языке C (=, +=, -=, *=, /=, %=), а C-выражение - выражение в синтаксисе языка C.




Содержание раздела