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