我想监视动态文件的行,watch
为此我使用命令。我有 2 个文件:test-status
和iplist_test
。我控制了一些东西,iplist_test
并将此输出输入到test-status
。iplist_test
文件有 150 行,我想查看类似14/150
或25/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 中单引号或转义整个命令行?