在 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
为空,导致一元运算符错误消息。可能的原因可能是您的系统中没有输出rootfs
。df -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 ))