[: -ge: unary operator expected 错误

1 #!/bin/bash
2
3 rate=$(df -h |grep /dev/sda3 | awk ‘{print $5}‘ | cut -d "%" -f1)
4
5 if [ $rate -ge 10 ]
6    then
7        echo "Warning! /dev/sda3 is full!!"
8 fi

运行报错 :

line 5: [: -ge: unary operator expected

错误原因:

由于变量rate初始化赋值为空,那么就成了 [  -ge "10"] 了,显然 [ 和 "10" 不相比较并且缺少了 [ 符号,所以报了这样的错误。

解决办法:

1、检查是否因为赋值语句写错而导致赋值为空

2、赋值前加declare -i rate=0

3、改成 if [[ $rate -ge 10 ]]  再加一对 []

时间: 2024-10-03 05:03:09

[: -ge: unary operator expected 错误的相关文章

[: ==: unary operator expected 解决方法

之前在写脚本时遇到了这样的错误 “[: ==: unary operator expected” 这是由于做判断的变量值为空导致的. 谷歌出解决方案: 在变量之后加任意字符.例如,要判断变量un是否为auto又要防止un为空出错则这样写 if [ ${un}x == autox] 当un为auto时,表达式为autox == autox,成立: un为空,表达式为x == autox ,则不成立.

shell脚本报错:"[: =: unary operator expected"

shell脚本报错:"[: =: unary operator expected" md5_109a="81ab961153b62d207f0f517048881b5d" md5_109b=`md5sum install.bin|awk '{print $1}'` if [ $md5_109a != $md5_109b ] 原因,当文件install.bin不存在时, $md5_109b为空这样对比字符串就变成了 if [ 81ab961153b62d207f0f5

unary operator expected

问题:写的脚本执行的时候出现报错,如下 分析: (1)出现的脚本所在行为if [ $result -eq 0 ];then (2)报错unary operator expected的中文意思是应该使用一元运算符,也就是说这个$result假如 为空的话就成了 if [ -eq 0] ,系统就会认为是少了一个参数,只有一个 -eq 0,没有左边的参数, 所以就会出现上述报错 解决:可以将脚本改为if [[ $result -eq 0 ]];then,多加一对[]号.至于为什么,我也是百度的

shell 报错:unary operator expected"

一直学习perl,shell都忘得差不多了,今天写了个小脚本,判断脚本第二个变量不等于某字符串时的操作. if [ $? -eq 0 ] && [ $2 != "wp" ] then : #略 fi 如果不加第二个变量,运行时会出现[: !=: unary operator expected"的报错,最后调试时发现 [ != "wp"] 原来shell的变量不定义时会出现这种情况,那就直接双括号吧. [[ != "wp"

shell脚本执行报错[: 0: unary operator expected

在执行shell脚本,if判断语句报错 #!/bin/bash if [ 0 == $testNum ] then echo "Check Result:0" fi testNum使用时没有定义,无赋值是空(原本是有定义的,只是笔误写错类似tsetNum了),执行转换后实际为 if [ 0 == ] 不相等,且少[符号错误:规避如下 #!/bin/bash if [[ 0 == $testNum ]] then echo "Check Result:0" fi 使用

shell脚本中 unary operator expected解决办法

if [ $USER = "oracle" ]; then     if [ $SHELL = "/bin/ksh" ]; then         ulimit -p 16384         ulimit -n 65536     else         ulimit -u 16384 -n 65536     fi fi 解决方案如下: if [ "$USER" = "oracle" ]; then    if [

字符串判空有空格报错:binary operator expected

使用-z或-n对一个变量判空时,需要注意若直接使用[ -n ${ARG} ]这种形式,若${ARG}中有空格将会报错, #!/bin/bash ARG="sd dd" if [ -n ${ARG} ]; then echo 'ARG:' ${ARG} else echo 'ARG is empty.' fi 输出: line 27: [: sd: binary operator expected ARG is empty. 解决方法,使用[[ -n ${ARG} ]]或[ -n &qu

J2SE配置问题—;expected错误总结

J2se的安装过程非常简单,跟安装软件一样,双击然后下一步直到最后.在这个过程中要注意的是一定要记住软件的安装路径,方便后面的查找. 第一步:在你想要的地方新建一个.txt的文本文件,保存为HelloWorld.java文件.在文件中编写代码: Public Class HelloWorld { Publicstatic void main(String [] args) { System.out.println("HelloWorld"); } } 注意:在这段代码中,一定要看清各个

Linux 笔记--脚本

脚本的参数 参数变量 $* 传递给脚本/函数的所有参数(把所有参数当成一个字符串) [email protected] 参数名字 $0 文件名字(first.sh…) $# 总共有多少个参数 $$ 脚本的 PID $! 上一个被执行的命令的 PID(后台运行的进程) IFS=, # 将函数参数的分隔符改成用',' 例如 IFS=: var=test echo ${#var} 4 echo $#var 0var echo $# == 0 # 2014-10-16 16:21:41 ## 测试 $*