Построение строки из переданных аргументов для цикла bash

Я пишу сценарий bash, в котором я использую большое количество аргументов. Это выглядит примерно так:

bash script.sh 713884440 1041 691539599 Digiweb 371449356 Dublin ...

Поскольку существует большое количество аргументов, а количество аргументов различается в зависимости от ситуации, я хотел построить строку, которая принимает все аргументы и помещает ее в такую ​​форму:

element.713884440="1041" -d element.691539599="Digiweb" -d element.371449356="Dublin"...

Сначала я попытался написать цикл for, чтобы сделать это. Для первой итерации цикла я подумал ${$i} будет сначала оценить $1затем 713884440

for i in $(seq 1 2 $#)
do
    ENT=$i
    VAL=$i+1
    ENTRYSTRING="$ENTRYSTRING -d element.${$i}=\"${${i+1}}\"";
done;

Это не сработало. И я попытался разрешить "внутреннюю" переменную через echo а также eval, но те тоже не сработали. Как бы я это сделал?

1 ответ

S=""
while [ $# -ge 2 ]
do
  S="$S -d element.$1=\"$2\""
  shift 2
done
echo $S
Другие вопросы по тегам