bash脚本变量里面的变量

x=1
c1=string1
c2=string2
c3=string3

echo $c1
string1

我想通过使用以下类似的方式使输出为string1:
echo $(c($x))

所以后来在脚本中,我可以增加x的值,并输出string1,然后输出string2和string3.

任何人都可以指向正确的方向吗?

参见Bash FAQ: How can I use variable variables (indirect variables,pointers,references) or associative arrays?

引用他们的例子:

realvariable=contents
ref=realvariable
echo "${!ref}"   # prints the contents of the real variable

为了显示这对你的例子有用:

get_c() { local tmp; tmp="c$x"; printf %s "${!tmp}"; }
x=1
c1=string1
c2=string2
c3=string3
echo "$(get_c)"

如果,当然,你想做正确的方式,只是use an array

c=( "string1" "string2" "string3" )
x=1
echo "${c[$x]}"

请注意,这些数组是零索引的,所以x = 1时它会打印字符串2;如果你想要string1,你将需要x = 0.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...