使用手表时获取更新的输出

使用手表时获取更新的输出

我用手表监控文件转换的进度。

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

当使用语法使用命令替换时,$(command)每次 watch 重新运行双引号内的命令时,值不会更新。如何正确地做到这一点?由于这是一个带有各种“进度”监视器的简单脚本,我想保留命令watch并避免类似的事情光伏发电

答案1

长话短说:你需要在那里使用单引号,如下所示:

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

解释

双引号告诉 Bash 进行字符串插值将命令传递给watch,因此 Bash 会评估这些子 shell,插入输出,然后将整个 shebang 传递给watch,它不会再次评估它们,因为它不知道它们。

相关内容