如何在 Bash 中构造变量名?
我想构造变量名 N_foo
和 N_bar
并在以下内容中使用它们的值:
#!/bin/bash
N_foo=2
N_bar=3
for i in { "foo" "bar" }
do
for j in { 1..$(`N_$i`) }
do
echo $j
done
done
我想使用 N_foo
和 的值N_bar
在两个内循环中,分别打印出1,2和1,2,3。正确的语法是什么?
I want to construct variable name N_foo
and N_bar
and use their values in the following:
#!/bin/bash
N_foo=2
N_bar=3
for i in { "foo" "bar" }
do
for j in { 1..$(`N_$i`) }
do
echo $j
done
done
I want to use the values of N_foo
and N_bar
in the two inner loops and print out 1, 2 and 1, 2, 3, respectively. What's the correct syntax?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用间接变量引用运算符:
示例
给出以下输出:
You can use the indirect variable reference operator:
Example
Which gives this output:
我最终使用了以下代码。它使用参数替换技术(参见 http://tldp.org/LDP/abs /html/parameter-substitution.html)。
!
是历史扩展参数(参见 http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters)。!j_max
将被设置为j_max
的最新值替换,即第一/第二中的N_foo
/N_bar
迭代。然后它调用${N_foo}
/${N_bar}
,其在第 1/2 次迭代中的值为 2/3。I ended up using the following code. It uses the parameter substitution technique (c.f. http://tldp.org/LDP/abs/html/parameter-substitution.html).
The
!
is history expansion parameter (c.f. http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters).!j_max
will be replaced by the most recent value set toj_max
which isN_foo
/N_bar
in 1st/2nd iteration. It then calls${N_foo}
/${N_bar}
which has value 2/3 in the 1st/2nd iteration.