Программирование на Shell (Unix)



СРЕДА SHELL (ПЕРЕМЕННЫЕ И ПАРАМЕТРЫ) - часть 7


Пусть расчет "examp-1" вызывается с параметрами "cock" и "tail". Эти параметры попадают в новую среду под стандартными именами "1" и "2". В (стандартной) переменной с именем "0" будет храниться имя вызванного расчета.

При обращении к параметрам перед цифрой ставится символ доллара "$" (как и при обращении к переменным):

$0 соответствует имени данного командного файла;
$1 первый по порядку параметр;
$2 второй параметр и т.д.

Пусть командный файл с именем "examp-1" имеет вид

echo Это расчет $0: sort $2 >> $1 cat $1

а файлы "cock" и "tail" содержат соответственно

cock:

Это отсортированный файл:

tail: 1 3 2

Тогда после вызова команды

examp-1 cock tail

на экране будет

Это расчет examp-1: Это отсортированный файл: 1 2 3

Поскольку число переменных, в которые могут передаваться параметры, ограничено одной цифрой, т.е. 9-ю ("0", как уже отмечалось имеет особый смысл), то для передачи большего числа параметров используется специальная команда "shift".

Рассмотрим ее действие на примере.

Пусть командный файл "many" вызывается с 13-ю параметрами

many 10 20 30 40 50 60 70 80 90 100 110 120 130

И имеет вид

### # many: Передача большого числа параметров. echo "$0: Много параметров" echo " Общее число параметров = $# Исходное состояние: $1 $5 $9 " shift echo "1 сдвиг: первый=$1 пятый=$5 девятый=$9" shift 2 echo "1 + 2 = 3 сдвига: первый=$1 пятый=$5 девятый=$9" perem=`expr $1 + $2 + $3` echo $perem

В результате первого применения команды "shift" второй параметр расчета вызывается как $1, третий параметр вызывается как $2, ... десятый параметр, который был исходно недоступен, вызывается как $9. Но стал недоступным первый параметр!

После выполнения этого расчета на экране будет:

many: Много параметров Общее число параметров = 13 Исходное состояние: 10 50 90 1 сдвиг: первый=20 пятый=60 девятый=100 1 + 2 = 3 сдвиг: первый=40 пятый=80 девятый=120 150




Содержание  Назад  Вперед