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.