Using a variable to refer to another variable in Bash
1 2 3 4 5 6 7 | x=1 c1=string1 c2=string2 c3=string3 echo $c1 string1 |
我希望通过使用类似的东西使输出
所以稍后在脚本中我可以递增
谁能指出我正确的方向?
请参阅Bash FAQ:如何使用变量变量(间接变量,指针,引用)或关联数组?
引用他们的例子:
1 2 3 | realvariable=contents ref=realvariable echo"${!ref}" # prints the contents of the real variable |
要说明这对您的示例有何用处:
1 2 3 4 5 6 | get_c() { local tmp; tmp="c$x"; printf %s"${!tmp}"; } x=1 c1=string1 c2=string2 c3=string3 echo"$(get_c)" |
当然,如果您想以正确的方式进行,只需使用数组 :
1 2 3 | c=("string1""string2""string3" ) x=1 echo"${c[$x]}" |
请注意,这些数组是零索引的,因此使用
试试这个:
1 | eval echo \$c$x |
像其他人说的那样,在这种情况下使用数组更有意义。
如果你有bash 4.0,你可以使用关联数组..或者你可以只使用数组。 你可以使用的另一个工具是awk
例如
1 2 3 4 5 6 7 8 | awk 'BEGIN{ c[1]="string1" c[2]="string2" c[3]="string3" for(x=1;x<=3;x++){ print c[x] } }' |