Назад | Перейти на главную страницу

Доступ ко всем переменным, переданным в сценарий оболочки из заданного индекса

Как мне получить доступ к значениям внутри $@ начиная с третьего? Сейчас я передаю их от трех до девяти, но я думаю, что есть способ получше:

while getopts ":n" opt "$3 $4 $5 $6 $7 $8 $9"; do

Мне кажется странным подход к аргументам, но:

[kbrandt@kbrandt: ~/scrap] cat args
args=("$@")
echo ${args[0]}
echo ${args[@]:1:2}
echo ${args[@]:0:$#}
[kbrandt@kbrandt: ~/scrap] bash args foo bar baz biz
foo
bar baz
foo bar baz biz

Я рекомендую вам проверить FAQ Ответ об аргументах командной строки (которые в основном говорят о getopts или loop / case / shift).

Я предполагаю, что в этом случае вы используете bash?

Если это так, вам следует использовать сдвиг.

Пример:

Содержание shift.sh:

#!/bin/bash
shift 3
echo $*

Результат:

graeme@graeme:~$ ./shift.sh one two three four five six
four five six