我正在编写一个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;
这没有用。而且我已经尝试过了#34;内部"变量解析通过echo
和eval
,但那些也无法解决。我该如何做到这一点?
答案 0 :(得分:1)
S=""
while [ $# -ge 2 ]
do
S="$S -d element.$1=\"$2\""
shift 2
done
echo $S