Итак, у меня есть сценарий 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 ]
Любая помощь будет оценена по достоинству.