我想有一个shell变量,可以在每次引用时动态运行,例如,我想有一个变量$ countPwd,它可以返回当前目录中的files / dirs计数,它可以定义为:
countPwd=`ls | wc -l`
如果我echo $countPwd
它只会在我定义变量时显示该值,但在更改当前目录时它不会自动更新。那么如何在bash中定义这样一个变量,使其值得到实时更新/计算?
更新: $ PWD是实时评估变量的完美示例。你不需要使用$()或反引号`来评估它。它是如何在bash中定义的?
答案 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中的更多细节(此问题的副本)。