Shell:如何检查可用空间并退出,如果还不够?

时间:2016-12-13 17:55:13

标签: linux shell

我想在执行脚本之前检查是否有足够的空间。 我想过

#!/bin/bash
set -e
cd
Home=$(pwd)
reqSpace=100000000
if [ (available Space) < reqSpace ]
    echo "not enough Space"
    exit 1
fi
do something

我想通过

检查的空间
df | grep $Home

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

将所有内容放在一起(set -ecd为简洁省略; Bash特定的语法 - 不符合POSIX标准):

#!/bin/bash

reqSpace=100000000
availSpace=$(df "$HOME" | awk 'NR==2 { print $4 }')
if (( availSpace < reqSpace )); then
  echo "not enough Space" >&2
  exit 1
fi

df "$HOME"输出有关$HOME目录的挂载点的磁盘使用情况的统计信息,awk 'NR==2 { print $4 }'从第二个输出行提取(POSIX强制的)第4个字段(第一行是标题行),其中包含以字节为单位的可用空间;将命令括在$(...)中可以捕获其输出并将其分配给变量availSpace

请注意使用(( ... ))(算术条件)来执行比较,该比较允许:

  • 引用没有$前缀的变量,

  • 使用惯用算术比较运算符,例如<(如果您使用-le[ ... ],则必须使用[[ ... ]] < / p>

最后,请注意>&2,它会将echo输出重定向到 stderr ,这是应该发送错误消息的位置。

答案 1 :(得分:1)

这是一种方法

df "$Home" | awk 'END{print $4}'

代码:

#!/bin/bash
set -e
cd
Home=$PWD
reqSpace=100000000
SPACE=`df "$Home" | awk 'END{print $4}'`
if [[ $SPACE -le reqSpace ]]
then
    echo "not enough Space"
    exit 1
fi
do something