shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)

shell报错:-bash: [: ==: 期待一元表达式 解决方法

对shell脚本有不理解的可以查看https://blog.csdn.net/wulimingde/category_10285021.html

问题脚本:

1 #!/bin/bash
2 PRICE=$(expr $RANDOM % 1000)
3 TIMES=0
4 echo "商品的实际价格范围0~999,猜猜看是多少?"
5 while true
6 do
7        read -p "请输入你猜测的价格数目:" INT
8        let TIMES++
9 if [ $INT -eq $PRICE ]
10 then
11        echo "恭喜你答对了,实际价格是 $PRICE"
12        echo "你总共猜测了 $TIMES 次"
13        exit 0
14 elif [ $INT -gt $PRICE ]
15 then
16        echo "太高了!"
17 else

问题报错:

./caizhi.sh: 第 9 行:[: -eq: 期待一元表达式
./caizhi.sh: 第 14 行:[: -gt: 期待一元表达式

解决方法:

1. 当 if 语句中使用 [ ] 条件修饰符时, $TNT 变量必须加上引号。

2. 当 if 语句中使用 [[ ]] 条件修饰符时,$TNT 变量的引号可有可无。

正确脚本:

      1 #!/bin/bash
      2 PRICE=$(expr $RANDOM % 1000)
      3 TIMES=0
      4 echo "商品的实际价格范围0~999,猜猜看是多少?"
      5 while true
      6 do
      7         read -p "请输入你猜测的价格数目:" INT
      8         let TIMES++
      9 if [ "$INT" -eq "$PRICE" ]      //在这一行将变量的双引号加上或者改为双中括号
     10 then
     11         echo "恭喜你答对了,实际价格是 $PRICE"
     12         echo "你总共猜测了 $TIMES 次"
     13         exit 0
     14 elif [ "$INT" -gt "$PRICE" ]     //这这一行将变量的双引号加上或者改为双中括号
     15 then
     16         echo "太高了!"
     17 else

脚本执行情况:

[root@localhost opt]# ./caizhi.sh 
商品的实际价格范围0~999,猜猜看是多少?
请输入你猜测的价格数目:456
太高了!
请输入你猜测的价格数目:345
太高了!
请输入你猜测的价格数目:101
太低了!
请输入你猜测的价格数目:102
恭喜你答对了,实际价格是 102
你总共猜测了 4 次

 

 

 

 

  • 14
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值