Построение строки из переданных аргументов для цикла 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