Watch

使用手錶時獲取更新的輸出

  • August 19, 2021

我使用watch來監控文件轉換的進度。

watch -n 2 "echo Converted: $(ls *.mp3 | wc -l) of $(ls *.wav | wc -l) files"

當使用$(command)語法使用命令替換時,值不會在每次 watch 重新執行雙引號內的命令時更新。如何正確執行此操作?由於這是一個帶有各種“進度”監視器的簡單腳本,我想保留該watch命令並避免使用類似pv的東西。

**TL;DR:**您需要在此處使用單引號,如下所示:

watch -n 2 'echo Converted: $(ls *.mp3 | wc -l) of $(ls *.wav | wc -l) files'

解釋

雙引號告訴 Bash在將命令傳遞給之前watch進行字元串插值,因此 Bash 評估這些子shell,插值輸出,並將整個 shebang 傳遞給watch,它永遠不會再次評估它們,因為它不知道它們。

引用自:https://unix.stackexchange.com/questions/665390