Watch
使用手錶時獲取更新的輸出
我使用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
,它永遠不會再次評估它們,因為它不知道它們。