如何在Bash中循环直到达到可用磁盘空间限制?

时间:2011-01-15 09:24:22

标签: bash while-loop disk

我想执行一组操作(x y z),只要我在/media/z挂载的文件系统上至少有200MB可用空间。

我该怎么做?

我试过像

这样的东西
while (`df | grep /media/z | awk '{print $4}'` > 204800); do x; y; z; done;

但我猜我的while语法错误。

2 个答案:

答案 0 :(得分:3)

( )在子shell中执行命令。如果要测试条件,则必须使用 test 命令:[ ]

while [ `df | grep /media/z | awk '{print $4}'` -gt 204800 ]; do 
    x; y; z; sleep 5; 
done;

答案 1 :(得分:2)

如果您使用bash使用[[]]来使用内部测试,它会更快并为您提供标准操作符:

while (( $(df /media/z | awk 'NR==2{print $4}') > 204800 )); do
    x; y; z
done