我只需要在循环内创建一个增量变量名。变量必须使用“在变量名中使用循环次数”。
循环内的示例:
# on Cycle=1
MyVar$Cycle=Exec$Cycle # (equal to MyVar1=Exec1)
# on Cycle=2
MyVar$Cycle=Exec$Cycle # (equal to MyVar2=Exec2)
# etc...
那么如何正确设置var名称?
轻松完成批处理工作:
set MyVar%Cycle%=Exec%Cycle% ...
但我不知道如何在 Bash 中实现它。
当然,这样捆绑是MyVar$Cycle=Exec$Cycle
行不通的。
只需能够设置增量变量名,这样我就可以随时向它们提供我可能需要的值。对我来说,脚本运行良好,但实时设置新变量名则不行。
答案1
解决此任务的一个可能方法是使用命令eval
就像这样:
#!/bin/bash
for i in {1..5}
do
eval "var$i"="$i"
done
# Output the result
for i in {1..5}
do
echo -n "\$var$i : "
eval echo "\$var$i"
done
示例输出:
$ ./cycle.sh
$var1 : 1
$var2 : 2
$var3 : 3
$var4 : 4
$var5 : 5
不过,我认为最好让你的脚本适应数组为了避免这样的魔法:
#!/bin/bash
for i in {1..5}
do
array["$i"]="$i"
done
# Output the result
for i in {1..5}
do
echo "\$array[$i]" : "${array[$i]}"
done
示例输出:
$ ./cycle.sh
$array[1] : 1
$array[2] : 2
$array[3] : 3
$array[4] : 4
$array[5] : 5
- 注意:默认情况下,Bash 数组中的第一个索引是
[0]
,而不是[1]
。