在循环中对单个变量使用多个值

问题描述 投票:0回答:3

我有一个小循环问题,如下所示。

运行同一个脚本时,我要使用 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

while read a b c
do
<code assumed to have loop iteration>
done <<< $(command)

但它没有按预期工作...非常感谢您对此的帮助。

谢谢, 布莱恩

bash redhat
3个回答
1
投票

您忘记了语法中的“in”部分:

for var in $va1 $va2 $va3
do 
    command $var
done

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

0
投票

尝试

while ((i=0,i<=3,i++))
do
eval bin/java -s \$var$i
done

这是如何使用

eval
的一个很好的例子。请注意,1. shell 扫描该行时会看到 $i 的值。然后因为$var像
\$var
一样被转义了,所以它不是 在第一次扫描中“使其可见”。 2.
Eval
强制对 cmd 行进行第二次扫描,因此它会看到 $var1 或其他内容,并且该值将被替换到命令行中以执行。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.