执行以下操作:
for i in {0..3};do
echo "${Card_${i}}"
done
我的目的是打印名为“ Card_1”,“ Card_2”和Card_3的参数
答案 0 :(得分:3)
完全有可能使用扩展来动态创建变量名称:
$ card_1=111
$ card_2=222
$ card_3=333
$ printf '%s\n' $card_{1..3}
111
222
333
括号扩展发生在参数扩展之前,因此$card_{1..3}
在参数扩展之前被扩展为$card_1 $card_2 $card_3
。
也就是说,您似乎正在使用数字后缀来模拟数组:
$ cards=( 111 222 333 444 )
$ printf '%s\n' "${cards[@]:0:3}"
111
222
333
我使用切片0:3
只是为了展示它们的工作原理。
答案 1 :(得分:1)
您可以使用变量间接寻址。但是,由于您mentioned每个0
本身都是一个数组,因此card
(需要declare -n
4.3或更高版本)可能是您的最佳选择:
bash