【问题标题】:Unexpected behaviour of watch commandwatch 命令的意外行为
【发布时间】:2016-12-30 16:28:10
【问题描述】:

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

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

但是下面的命令效果很好。

watch "ls -l| wc -l"

这种行为的解释是什么?

【问题讨论】:

标签: linux command watch


【解决方案1】:

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

watch "echo 42"

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

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

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

或者更容易使用单引号,它禁止所有扩展:

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

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 2018-10-03
    • 2012-01-04
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多