我有一个简单的命令来评估根分区上是否有足够的可用磁盘空间:
if [ $(df | awk '$6 == "/" {print $4}') -lt 30000 ]; then
echo "Insufficient free disk space"
else
echo "Disk space check OK"
fi
这将返回"磁盘空间检查确定" (即false),但是从df命令返回的实际值大于30000.所以,我希望比较返回true:
$ echo $(df | awk '$6 == "/" {print $4}')
38052168
我在这里缺少什么?
谢谢!
答案 0 :(得分:1)
注意print "$4"
用awk打印可用的磁盘空间。如果是这样
你可以使用sed
来完成这个简单的工作,但也需要引入一些错误检查,以防df
返回错误。
我可以这样试试
avail=$(df --output=avail / 2>/dev/null | sed 1d)
if [ -z "$avail" ] # $avail can be empty only df fails as per this case
then
echo "Error with df"
elif [ "$avail" -lt 30000 ] # Your original logic is correct!!
then
echo "Insufficient Disk Space"
else
echo "Disk Check Passed"
fi
df --output=avail /
为您提供如下输出
Avail
8708124
答案 1 :(得分:0)
38052168不小于30000,这就是else块正在运行的原因。而不是-lt使用-gt或
if [[ ! com1 -lt com2 ]];then
# do stuff
else
# do stuff
fi