【问题标题】:String with variable expansion changes if variable changes如果变量更改,则具有变量扩展的字符串会更改
【发布时间】:2013-05-11 23:22:03
【问题描述】:

有没有办法通过变量扩展来改变字符串的内容,如果变量扩展了,内容也会更新?

像这样:

var1=0 # set var1
var2="$var1" # set var2 to var1
var1=1 # set var1 to something else and have var2 change as well?

我知道这个例子行不通,但它只是向你们展示我正在尝试做的事情。

有没有什么办法可以在不总是在 var2 之前设置 var1 的情况下实现这一点?

提前致谢

编辑:另外,是否可以使用在第一个变量之前未设置的变量来执行此操作? 像这样:

var2=$var1
var1=10
echo $var2

我希望输出为 10,但由于分配给 var2 时未设置 var1,因此 var2 也将为空。帮助

【问题讨论】:

    标签: bash


    【解决方案1】:

    检查这个:How can I use variable variables (indirect variables, pointers, references) or associative arrays?

    一种方式:

    var1=200
    var2=var1
    echo ${!var2}                                    
    200
    var1=100
    echo ${!var2}
    100
    

    【讨论】:

    • 是的,这是一种方法,但如果可能的话,我不希望这样做,因为它在常见问题解答本身中说,这是一个坏主意。
    【解决方案2】:

    我认为 bash 没有指针的概念。

    所以如果我这样做,我会写一个函数,例如setVar1,func 有一个参数,即var1 的新值。在此函数中,新值将设置为 var1 and var2

    所以当你想将值设置为var1时,你必须调用该函数。

    另外,如果 var2 总是与 var1 具有相同的值,为什么不只使用一个变量呢?

    【讨论】:

    • 这只是一个简单的例子。在我的脚本中 var1 指的是在 var1 之后设置的多个变量
    • 好吧,你最清楚你的需求。您可以将多个变量放入该函数中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多