我有一个小循环问题,如下所示。
运行相同的脚本时,我有3个不同的值 -
va1="some-value1"
va2="some-value2"
va3="some-value3"
现在我想使用这三个变量值来运行相同的命令,比如 -
while (i=0,i<=3,i++)
do
bin/java -s (run something with $var);
done
现在我希望$ var在每次运行时获取var1,var2和var3的值,
所以有人可以告诉我我们如何实现上述目标?
我尝试过 -
for $1 $2 $3
do
case 1
case 2
case 3
done
OR
while read a b c
do
<code assumed to have loop iteration>
done <<< $(command)
但它没有按预期工作......非常感谢你对此的帮助。
谢谢, 布赖恩
答案 0 :(得分:1)
你忘了语法的'in'部分:
for var in $va1 $va2 $va3
do
command $var
done
答案 1 :(得分:0)
试
while ((i=0,i<=3,i++))
do
eval bin/java -s \$var$i
done
这是如何使用eval
的一个很好的例子。请注意1.外壳可以看到$ i的值,它会扫描该行。然后因为$ var像\$var
那样被转义,所以不是。{
&#39;使可见&#39;在第一次扫描。 2. Eval
强制对cmd-line进行第二次扫描,因此它会看到$ var1或其他内容,并将该值替换为命令行以供执行。
我希望这会有所帮助。
P.S。欢迎来到StackOverflow,让我提醒您我们通常在这里做的三件事:1)当您收到帮助时,请尝试给予它,回答您在专业领域的问题2)阅读常见问题解答,http://tinyurl.com/2vycnvr,3)当您看到良好的问答时,请使用灰色三角形http://i.imgur.com/kygEP.png对其进行投票,因为系统的可信度基于用户通过分享知识获得的声誉。还记得通过勾选复选标记http://i.imgur.com/uqJeW.png
来接受更好地解决问题的答案(如果有的话)答案 2 :(得分:0)
您可以使用${!...}
:
va1="some-value1"
va2="some-value2"
va3="some-value3"
for ((i=1;i<=3;i++)); do
varname="va$i"
echo "$varname = ${!varname}"
done
打印:
va1 = some-value1
va2 = some-value2
va3 = some-value3