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

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

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

2 ответа

Решение

Похоже, что для меня аргумент в стиле фанк, но:

[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

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

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

Если это так, вы должны использовать Shift.

Пример:

Содержимое shift.sh:

#!/bin/bash
shift 3
echo $*

Результат:

graeme@graeme:~$ ./shift.sh one two three four five six
four five six
Другие вопросы по тегам