使用带有“echo -e”的 watch 命令

使用带有“echo -e”的 watch 命令

我想监视动态文件的行,watch为此我使用命令。我有 2 个文件:test-statusiplist_test。我控制了一些东西,iplist_test并将此输出输入到test-statusiplist_test文件有 150 行,我想查看类似14/15025/150等的结果。为此我使用以下命令:

watch -n .1 echo -e "$(cat test-status | wc -l)\/$(cat iplist_test | wc -l)"

该命令不像watch命令那样工作,它是静态的。我手动刷新以获得实时结果。我的命令有什么问题?

答案1

输出是静态的,因为在启动$()之前已由您的 shell 解析。watch

用 引用''应该会有所帮助。单引号可防止扩展,这种方式$()将逐字传递给watch,然后每次都进行解析:

watch -n .1 'echo -e "$(cat test-status | wc -l)/$(cat iplist_test | wc -l)"'

你也误用了cat。这应该可以在没有任何不必要的cat过程的情况下工作:

watch -n .1 'echo -e "$(<test-status wc -l)/$(<iplist_test wc -l)"'

如果您要监视的命令中已经有单引号,请参见以下内容:如何方便地在 Bash 中单引号或转义整个命令行?

相关内容