-1
我想用来监视目录中文件数量的以下命令不会动态显示所需的值。监视命令的意外行为
watch "echo \`ls -l| wc -l\`"
但是下面的命令工作正常。
watch "ls -l| wc -l"
这种行为的解释是什么?
我想用来监视目录中文件数量的以下命令不会动态显示所需的值。监视命令的意外行为
watch "echo \`ls -l| wc -l\`"
但是下面的命令工作正常。
watch "ls -l| wc -l"
这种行为的解释是什么?
这是因为在执行watch
之前,shell会扩展反引号。如果你使用set -x
,你会看到,在调用
watch "echo 42"
,实际上最终的命令,它解释了为什么它总是一样的。通过使用单引号,抑制所有扩展
watch "echo \`ls -l | wc -l\`"
或者更容易:
watch 'echo `ls -l | wc -l`'
PS:[停止使用反引号](http://mywiki.wooledge.org/BashFAQ/082 ) –
Stack Overflow是编程网站
你可以用一个反斜杠逃脱
'
从字面上传递和发展问题。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布关于Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww