【问题标题】:Using variable value as variable name in bash在bash中使用变量值作为变量名
【发布时间】:2015-11-29 10:13:39
【问题描述】:

我以前看过这个问题,但我似乎无法理解它。

我有这个从用户输入获得的变量 read column_number

然后我用“col”前缀加入它以形成我的变量的名称

selected_column="col"$column_number

但是当我尝试评估它以获得结果时,我不断收到 (standard_in) 1: syntax error

sum=$(round $sum+"echo ${!selected_column}", 2)

full code:

【问题讨论】:

    标签: bash variables variable-names


    【解决方案1】:
    column_number=5
    selected_column=col$column_number
    col5=42
    sum=17
    echo $(($sum+${!selected_column}))
    

    输出:

    59
    sum=$(round $(($sum+${!selected_column})) 2)
    

    【讨论】:

    • 请您解释一下${!selected_column}是不是我们这里使用的历史扩展功能?
    • @sjsam: From man bash: "如果参数的第一个字符是感叹号(!),则引入了变量间接级别。bash使用形成的变量的值从参数的其余部分作为变量的名称;然后扩展此变量,并在其余替换中使用该值,而不是参数本身的值。这称为间接扩展。"
    • @gboffi:哇!!干杯朋友!有帮助。
    • 谢谢!!它确实有效,虽然我不得不稍微调整一下,因为它干扰了轮函数,所以实际用法(当涉及到完整代码时)是这样的:sum=$(round $sum+${!selected_column} 2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多