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