.bash_profile 中的命令返回过时的结果

.bash_profile 中的命令返回过时的结果

.bash_profile 文件具有以下别名。

~# cat .bash_profile
# other commands
alias btcblock="echo $(bitcoin-cli getblockcount 2>&1)/$(wget -O - http://blockchain.info/q/getblockcount 2>/dev/null)"

但是如果我运行该命令然后不久之后运行别名,显示的结果是不同的,如下所示:

~# echo $(bitcoin-cli getblockcount 2>&1)/$(wget -O - http://blockchain.info/q/getblockcount 2>/dev/null)
503967/534428
~# btcblock
503839/534428

好像别名的结果总是过时的。知道为什么会这样吗?

答案1

在命令中alias btcblock="echo $(...)/$(...)",两个$()s被执行并插入当别名被定义时,因为这就是"..."引用的工作方式。

您可能想要alias btcblock='echo $(...)/$(...)''(单引号)而不是"(双引号)来写。

相关内容