如何在bash中定义动态变量?

时间:2011-05-03 18:34:02

标签: bash variables dynamic

我想有一个shell变量,可以在每次引用时动态运行,例如,我想有一个变量$ countPwd,它可以返回当前目录中的files / dirs计数,它可以定义为:

countPwd=`ls | wc -l`

如果我echo $countPwd它只会在我定义变量时显示该值,但在更改当前目录时它不会自动更新。那么如何在bash中定义这样一个变量,使其值得到实时更新/计算?

更新: $ PWD是实时评估变量的完美示例。你不需要使用$()或反引号`来评估它。它是如何在bash中定义的?

3 个答案:

答案 0 :(得分:6)

创建一个功能:

countPwd() {
    ls | wc -l
}

然后像任何其他命令一样调用该函数:

echo "There are $(countPwd) files in the current directory."

答案 1 :(得分:0)

另一种选择:将命令存储在变量中,并在需要时对其进行评估:

countPwd='ls | wc -l'
echo $(eval "$countPwd")

答案 2 :(得分:0)

您需要编写一些C代码:编写一个bash' loadable buitins来解决使用$SECONDS$RANDOM等动态值定义变量的繁重工作($PWD仅由cd)设置。

我的回答here中的更多细节(此问题的副本)。