为什么 bash 使用 -ge 来比较而不是 ==?

为什么 bash 使用 -ge 来比较而不是 ==?

因此,我正在考虑为我的家庭服务器添加硬盘空间不足警告。我喜欢下面的外观,它来自这里

ADMIN="[email protected]"
# set alert-level 90 % standard
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo "space low on \"$partition ($usep%)\", on server $(hostname) at $(date)" |
 mail -s "Alert: Free space low, $usep % used on $partition" $ADMIN
  fi
done

我认为在实际运行任何脚本之前,最好先理解它,因此我一直在查看手册页,以了解程序的每个部分是如何工作的,这似乎相当简单。我唯一不明白的是条件语句-ge中的标志if。根据 bashif 页面介绍如果“文件存在”,则这两个都将求值为真。当我比较两个变量时,此逻辑如何通过。在其他编程语言中,我会使用==语法。同样,为什么我们要将 的值90(由 df 报告)与10的变量进行比较ALERT,我认为这与条件求值的方式有关?我没有理由相信此代码不起作用,我只是想知道在将其添加到脚本之前为什么会这样。

谢谢。

相关内容