我正在编写一个 bash 脚本来检查磁盘上的可用空间:
if [ check_space -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi
check_space
返回一个数字,类似于52
函数check_space
:
check_space() {
df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//';
}
它正在返回./backup.sh: line 63: [: check_space: a full expression was expected
(我从西班牙语翻译过来,因此可能不是准确的翻译)。可能出了什么问题?
答案1
您的条件实际上并没有调用 check_space,您需要类似以下内容:
if [ `check_space` -gt "85" ]; then
答案2
您可以按照以下方法操作...
#!/bin/bash
CHECK_SPACE=`df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//'`;
if [ $CHECK_SPACE -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi
我不得不拿出我的 bash 备忘单。bash 中的函数不能返回值,只能返回退出状态。
答案3
带引号的“85”是一个字符串,而不是数字……-gt 不起作用。
建议:
CHECK_SPACE=$(df -P /dev/sda1 | awk '$1=="/dev/sda1"{sub("%","");print $5}')
if [ $CHECK_SPACE -gt 85 ]; then
echo "removing"
else
echo "not removing"
fi