Сценарий оболочки - я хочу пройти через второй аргумент до последнего аргумента - PullRequest
0 голосов
/ 14 июня 2011

Как пройти через второй аргумент к последнему аргументу как:

for arg in $2-$@
do
  echo $i
done

Пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

На самом деле, не доверяйте аргументам ... они могут содержать пробелы или другие специальные метасимволы оболочки. Двойные кавычки - ваши друзья в сценариях оболочки.

shift;           #eat $1
for arg in "$@"
do
  echo "$arg"
done

При двойных кавычках «$ @» использует специальную магию, чтобы гарантировать сохранение слов. Гораздо лучше, чем $ *. «$ *» обрабатывает все аргументы одновременно.

Двойные кавычки - не идеальное решение, просто лучшее, простое.

2 голосов
/ 14 июня 2011

Используйте shift in bash.

shift
for arg in $@
do
  echo $arg
done
0 голосов
/ 14 июня 2011
args=("$@")

for arg in $(seq 2 `expr $# - 1`)
do
  echo ${args[$arg]}
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...