只是一个简单的问题
我有一些数组:
array_0=(1 2 3)
array_1=(1 2 3)
.......
Run Code Online (Sandbox Code Playgroud)
我有一个变量a:
a=0
echo ${array_"$a"[0]}
Run Code Online (Sandbox Code Playgroud)
得到了错误的替换错误.有谁知道正确的语法?
您可以做的一件事是使用以下语法:
array_a=array_$a[0]
echo ${!array_a}
Run Code Online (Sandbox Code Playgroud)
将!作为第一个字符表示要通过评估的变量,然后使用结果作为表达式中使用额外的间接水平.
您可以使用eval:
#!/bin/bash
array_0=(1 2 3)
array_1=(4 5 6)
array_2=(7 8 9)
for a in {0..2} ; do
for i in {0..2} ; do
eval 'echo ${'"array_$a[$i]"'}'
done
done
Run Code Online (Sandbox Code Playgroud)
Vaughn Cato 的语法稍微冗长一些,但echo语句本身更容易理解。for您可以用这两行替换双循环的内部部分:
array_a=array_$a[$i]
echo ${!array_a}
Run Code Online (Sandbox Code Playgroud)