В командный файл могут быть переданы параметры. В shell используются позиционные параметры (т.е. существенна очередность их следования). В командном файле соответствующие параметрам переменные (аналогично shell-переменным) начинаются с символа "$", а далее следует одна из цифр от 0 до 9:
Пусть расчет "examp-1" вызывается с параметрами "cock" и "tail". Эти параметры попадают в новую среду под стандартными именами "1" и "2". В (стандартной) переменной с именем "0" будет храниться имя вызванного расчета.
При обращении к параметрам перед цифрой ставится символ доллара "$" (как и при обращении к переменным):
$0 - соответствует имени данного командного файла; $1 - первый по порядку параметр; $2 - второй параметр и т.д.
echo Это расчет $0: sort $2 >> $1 cat $1
cock: Это отсортированный файл: tail: 1 3 2
examp-1 cock tail
Это расчет examp-1: Это отсортированный файл: 1 2 3
Рассмотрим ее действие на примере.
Пусть командный файл "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
После выполнения этого расчета на экране будет:
many: Много параметров Общее число параметров = 13 Исходное состояние: 10 50 90 1 сдвиг: первый=20 пятый=60 девятый=100 1 + 2 = 3 сдвиг: первый=40 пятый=80 девятый=120 150
set a b с echo первый=$1 второй=$2 третий=$3
первый=a второй=b третий=c
set `date` echo $1 $3 $5
Mon 01 2000
set -v - на терминал выводятся строки, читаемые shell. set +v - отменяет предыдущий режим. set -x - на терминал выводятся команды перед выполнением. set +x - отменяет предыдущий режим.