用for循环bash中的传递参数构建字符串

时间:2018-02-06 15:40:18

标签: linux bash variables escapestring

我正在编写一个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;内部"变量解析通过echoeval,但那些也无法解决。我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

S=""
while [ $# -ge 2 ]
do
  S="$S -d element.$1=\"$2\""
  shift 2
done
echo $S