2016-12-30 69 views
-1

我想用來監視目錄中文件數量的以下命令不會動態顯示所需的值。監視命令的意外行爲

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

但是下面的命令工作正常。

watch "ls -l| wc -l" 

這種行爲的解釋是什麼?

+0

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

回答

1

這是因爲在執行watch之前,shell會擴展反引號。如果你使用set -x,你會看到,在調用

watch "echo 42" 

,實際上最終的命令,它解釋了爲什麼它總是一樣的。通過使用單引號,抑制所有擴展

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

或者更容易:

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

PS:[停止使用反引號](http://mywiki.wooledge.org/BashFAQ/082 ) –