为了账号安全,请及时绑定邮箱和手机立即绑定

Bash中的动态变量名

Bash中的动态变量名

米脂 2019-06-06 14:34:27
Bash中的动态变量名我对巴什剧本很困惑。我有以下代码:function grep_search() {     magic_way_to_define_magic_variable_$1=`ls | tail -1`     echo $magic_variable_$1}我希望能够创建一个变量名,其中包含命令的第一个参数,并带有例如ls.为了说明我想要的$ ls | tail -1stack-overflow.txt $ grep_search() open_box stack-overflow.txt那么,我应该如何定义/声明$magic_way_to_define_magic_variable_$1在剧本里我该怎么称呼它呢?我试过了eval, ${...}, \$${...}但我还是很困惑。
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

使用关联数组,命令名作为键。

# Requires bash 4, thoughdeclare -A magic_variable=()function grep_search() {
    magic_variable[$1]=$( ls | tail -1 )
    echo ${magic_variable[$1]}}

如果不能使用关联数组(例如,必须支持bash3)你可以用declare若要创建动态变量名,请执行以下操作:

declare "magic_variable_$1=$(ls | tail -1)"

并使用间接参数展开来访问该值。

var="magic_variable_$1"echo "${!var}"

见BashFAQ:间接评价间接/参考变量.


查看完整回答
反对 回复 2019-06-06
?
RISEBY

TA贡献1856条经验 获得超5个赞

我最近一直在寻找更好的方法。联想数组听起来对我来说太过分了。看看我发现了什么

suffix=bzz
declare prefix_$suffix=mystr

.然后.

varname=prefix_$suffix
echo ${!varname}


查看完整回答
反对 回复 2019-06-06
?
墨色风雨

TA贡献1853条经验 获得超6个赞

下面的示例返回$name_of_var的值

var=name_of_var
echo $(eval echo "\$$var")


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 908 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信