Операционная система Free BSD

русская медная компания алтушкин

Передача аргументов. Команда shift.


При запуске на выполнение, сценарию можно передать аргументы в командной строке. Например: # /usr/games/pool file1.txt user1M

Для того, чтобы можно было работать с переданными аргументами, существует девять переменных - $1, $2, : , $9. Они позиционно соответствуют переданным аргументам. Т.е. в нашем примере $1 содержит строку "file.txt", а $2 содержит строку "user1". Кроме того, в переменной $# содержится количество переданных аргументов. В нашем случае - 2.

Но что делать, если нужно передать, скажет, 15 аргументов ? Как получить доступ к аргументу с номером больше 9 ?

Для этой цели существует команда shift, которая просто осуществляет сдвиг аргументов на одну позицию <влево>. Т.е. $1 получает значение $2, $2 - $3 и т.д. При этом значение, которое было в $1 до сдвига - теряется. При этом сдвиге так же уменьшается на 1 значение $#.

Рассмотрим это на примере. Создайте такой файл #!/usr/local/bin/bash i=1 while [ $# -eq 0 ] do echo "Аргумент $i - $1" shift i=`expr $i + 1` done

Назовите его, например, my_shift.

Запустите его так:

# my_shift p1 p2 p3 p4

На экране вы увидете: Аргумент 1 - p1 Аргумент 2 - p2 Аргумент 3 - p3 Аргумент 4 - p




Начало  Назад  Вперед