Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО практика.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

20. Вопрос Параметры

В командный файл можно передать параметры. Соответствующие параметрам переменные также начинаются с символа $, далее следуют цифры от 0 до 9. При этом: $0 соответствует имени данного сценария, $1 – первому по порядку параметру, $2 – второму параметру и т.д.

Пусть сценарий script-1 имеет вид:

file1:

file2:

echo Это командный файл $0:

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

3

sort $2 >> $1

2

cat $1

1

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

script-1 file1 file2

на экране получим:

Это командный файл script-1:

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

1

2

3

Для передачи большого числа параметров используется специальная команда shift. Пусть сценарий many имеет вид:

# 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 в следующем виде:

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

на экране получим:

many: Много параметров

Общее число параметров = 13

Исходное состояние: 10 50 90

1 сдвиг: первый=20 пятый=60 девятый=100

1 + 2 = 3 сдвига: первый=40 пятый=80 девятый=120

150

Манипуляции с shell-переменными

Несмотря на то, что в общем случае shell-переменные воспринимаются как строки, в некоторых случаях они могут интерпретироваться иначе. Разнообразные возможности в этом смысле дает команда expr.

Выполнение командного файла: выдаст на экран:

x=7 y=2

a=`expr $x + $y` ; echo a=$a

a=9

a=`expr $x + 1` ; echo a=$a

a=8

b=`expr $y - $x` ; echo b=$b

b=-5

c=`expr $x '*' $y` ; echo c=$c

c=14

d=`expr $x / $y` ; echo d=$d

d=3

e=`expr $x % $y` ; echo e=$e

e=1

Операция умножения обязательно должна быть заэкранирована, т.к. в shell звездочка воспринимается как метасимвол. Кроме того, необходимо обратить внимание на пробелы между переменными и знаками операций.

С помощью команды expr можно выполнять не только целочисленные арифметические операции, но и строковые:

A=`expr 'linux' : 'lin' ` ; echo $A

3

B=`expr 'linux' : 'nux' ` ; echo $B

0

C=`expr 'linux' : 'unix' `; echo $C

0

D=`expr 'lin' : 'linux' ` ; echo $D

0

На экран выводятся числа совпадений символов в цепочках от начала, при этом вторая строка не может быть длиннее первой.