我想在执行脚本之前检查是否有足够的空间。 我想过
#!/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
有什么建议吗?
答案 0 :(得分:3)
将所有内容放在一起(set -e
和cd
为简洁省略; 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