如何在bash中的另一个参数中包含参数

时间:2018-07-17 10:39:57

标签: bash shell

执行以下操作:

for i in {0..3};do
        echo "${Card_${i}}"
done

我的目的是打印名为“ Card_1”,“ Card_2”和Card_3的参数

2 个答案:

答案 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