-gt:预期一元运算符的 shell 脚本

-gt:预期一元运算符的 shell 脚本

在 ubuntu 中升级包后出现此错误。

#!/bin/bash
used=$(df -H | grep  'rootfs' | cut -d "G" -f 4 | cut -d "%" -f 1)
limit=90
if [ $used -gt $limit ]; then Or [ "$used" -gt "$limit" ] Or [ "$used" -ge 90 ]
#delete file and mail command;
fi

错误

[:-gt:预期一元运算符

答案1

变量used为空,导致一元运算符错误消息。可能的原因可能是您的系统中没有输出rootfsdf -H

$ foo=
$ [ $foo -gt 10 ] && echo OK
bash: [: -gt: unary operator expected

您的脚本中还存在一些其他问题,OR 逻辑应如下所示:

[ "$foo" -gt "$bar" ] || [ "$foo" -ge 90 ]

最好使用 shell 关键字[[而不是test( [) 命令以避免许多陷阱:

[[ "$foo" -gt "$bar" ]] || [[ "$foo" -ge 90 ]]

对于算术比较,您还可以使用((常规算术运算符:

(( "$foo" > "$bar" )) || (( "$foo" >= 90 ))

您甚至不需要$在变量名称前面放置:

(( foo > bar )) || (( foo >= 90 ))

相关内容