watch命令的意外行为

时间:2016-12-30 03:45:39

标签: linux command watch

我想用来监视目录中文件数的以下命令不会动态显示所需的值。

watch "echo \`ls -l| wc -l\`"

然而,以下命令效果很好。

watch "ls -l| wc -l"

这种行为有什么解释?

1 个答案:

答案 0 :(得分:1)

这是因为shell在执行watch之前会扩展反引号。如果您使用set -x,您将看到实际最终调用的命令

watch "echo 42"

解释了为什么它总是一样的。

您可以使用反斜杠转义`以按字面意思传递它:

watch "echo \`ls -l | wc -l\`"

或者更容易使用单引号来抑制所有扩展:

watch 'echo `ls -l | wc -l`'