将动态值分配给变量

时间:2012-10-17 22:08:20

标签: shell variables dash-shell dynamic-values

如何为变量分配动态值?我所知道的最简单的方法是使用函数。例如

fn(){
    VAR=$VAL
}
VAL=value
fn
echo $VAR

将输出

value

但我想要更简单的东西,比如

VAR=$VAL
VAL=value
echo $VAR

输出

value

我应该使用什么命令?最好与破折号兼容。

谢谢!

更新:已删除与破折号相关的#!/ bin / sh 。感谢“Ignacio Vazquez-Abrams”的解释!

更新2:为我的脚本添加源代码以更好地了解情况。

INPUT=`dpkg -l|grep ^rc|cut -d' ' -f3`
filter(){
    echo *$A*
}
for A in $INPUT;do find ~ -iname `filter`|grep ^$HOME/\\.|grep -iz --color $A;done

此脚本应有助于查找已删除软件包的其余配置文件。

3 个答案:

答案 0 :(得分:2)

好的,如果功能不好,那么调用eval可以吗?

export VAR='echo $VAL'
VAL=10
eval $VAR

这将显示

10

答案 1 :(得分:0)

设置值的简单函数怎么样?

# export is needed so f() can use it.
export VAR

f() {
    VAR=$@
}

f 10
echo $VAR
f 20
echo $VAR

上面的代码将显示:

10
20

答案 2 :(得分:0)

如果我了解您的需求,您需要间接,请尝试以下shell代码(使用dash测试):

var=foo
x=var
eval $x=another_value
echo $var

输出

another_value

终于

每次需要修改var时,都需要运行eval $x=foobar