为什么这个 bash 脚本不起作用?

为什么这个 bash 脚本不起作用?

我正在编写一个 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

相关内容