1

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

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

将输出

value

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

VAR=$VAL
VAL=value
echo $VAR

输出

value

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

谢谢!

更新:删除了与dash相关的#!/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

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

4

3 回答 3

2

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

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

这将显示

10
于 2012-10-17T22:36:00.657 回答
0

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

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

f() {
    VAR=$@
}

f 10
echo $VAR
f 20
echo $VAR

上面的代码将显示:

10
20
于 2012-10-17T22:20:31.773 回答
0

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

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

输出

another_value

最后

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

于 2012-10-17T22:20:41.053 回答