захват всех аргументов после n-го аргумента и объединение их вместе в bash

Итак, у меня есть сценарий bash, который должен принимать произвольное количество аргументов командной строки и помещать их в одну строку

Пример того, что вводит пользователь:

give <environment> <email> <any number of integers separated by spaces>
give testing stuff@things.com 1 2 3 4 5

Я хочу получить все аргументы от $3 до $# и объединить их в строку.

Мое (вероятно, ужасное) решение прямо сейчас таково:

if [ $# -gt 3 ]
then
    env="env="$1
    email="email="$2
    entList=""

    for i in {3..$#}
    do
        if [ $i -eq 3 ]
            then
                    entList=$3
                    shift
            fi;
            if [ $i -gt 3 ]
            then
                    entList=$entList","$3
                   shift
            fi;
     done
fi;

Я немного по-другому обрабатываю случай наличия только трех аргументов, и этот работает нормально.

Окончательное значение $entListв примере дает тестирование (скрыто) 1 2 3 4 5должно быть: 1,2,3,4,5

Прямо сейчас, когда я запускаю это, я получаю следующие ошибки:

/usr/local/bin/ngive.sh: line 29: [: {3..5}: integer expression expected
/usr/local/bin/ngive.sh: line 34: [: {3..5}: integer expression expected

Строки 29 и 34:

line 29: if [ $i -eq 3 ]
line 34: if [ $i -gt 3 ]

Любая помощь будет оценена по достоинству.

5
задан Snaxib 22 June 2012 в 15:12
поделиться