当我运行df -h | grep sdc
一切正常时,我会看到人类可读格式的数字:
/dev/sdc1 954G 889G 65G 94% /media/bohdan/teamdata
当我运行sh -c "df -h | grep sdc"
一切都很好时,结果是一样的......
当我跑步时watch sh -c "df -h | grep sdc"
......突然我不再有资格看到人类可读的数字:
/dev/sdc1 1000203520 934440320 65763200 94% /media/bohdan/teamdata
为什么?
这是因为默认情况下,
watch
它本身会将您的命令包装在一个sh -c
命令中。这意味着你失去了引用的层次,你的命令变成了以便
sh -c
执行 plaindf
,并-h
作为位置参数传递给 shell。您可以添加额外的报价:
或告诉手表不要使用以下命令包装命令
-x
:或者干脆跑
没有(不必要的)显式
sh -c
。你需要引用命令
watch
运行调用给出的命令sh -c
。所以你实际上正在做的是运行类似sh -c sh -c "df -h | grep sdc"
.所以我想说,
sh -c
在你的watch
参数中是多余的。