我想用来监视目录中文件数的以下命令不会动态显示所需的值。
watch "echo \`ls -l| wc -l\`"
然而,以下命令效果很好。
watch "ls -l| wc -l"
这种行为有什么解释?
答案 0 :(得分:1)
这是因为shell在执行watch
之前会扩展反引号。如果您使用set -x
,您将看到实际最终调用的命令
watch "echo 42"
解释了为什么它总是一样的。
您可以使用反斜杠转义`
以按字面意思传递它:
watch "echo \`ls -l | wc -l\`"
或者更容易使用单引号来抑制所有扩展:
watch 'echo `ls -l | wc -l`'