在尝试watch bash -c 'du -h /etc/passwd && df -h'
时,文件的路径似乎被完全忽略,而是du -h
通过当前工作目录运行。当我运行时观察到相同的结果watch bash -c 'stat /etc/passwd && df -h'
,并stat
返回stat: missing operand
错误。相比之下,使用watch -e "command /path/to/file"
或watch "command /path/to/file"
工作没有问题。
那为什么不行watch bash -c 'du -h /etc/passwd && df -h'
呢?是争论分裂watch
的问题还是bash
问题?
watch
通过将参数传递给 来执行带有参数的命令sh -c
,因此您最终运行的是:您正在运行的外壳会删除您应用的第一层引号。然后将
-h
,/etc/passwd
作为$0
和传递$1
给 bash,因此它们被有效地忽略了。运行类似:要验证,请使用
strace
:并
log
包含: