永发信息网

shell 编程 里面 if 嵌套 for 语句的匪夷所思的 事情!!

答案:2  悬赏:60  手机版
解决时间 2021-03-26 06:33
  • 提问者网友:人生佛魔见
  • 2021-03-26 03:09
下面是我的小代码:
#!/bin/bash
RATEMIN1=40
RATEMIN5=60
if [ $RATEMIN1 -le 50 ] && [ $RATEMIN5 -ge 50 ]
then
for i in 1 2 3 4 5
do

if [ $RATEMIN$i -ge 50 ]
then
echo "FUCK!"
break
fi
continue
done
fi

运行之后,没有结果显示,但是如果我把 RATEMIN1和2的值颠倒,然后把第一个if语句里面的条件改成 -le ,那就有结果显示出来!!,我很奇怪我这到底问题出在哪?求高手指点!!!我运行的环境是solaris10g

上面说的把 RATEMIN1和2的值颠倒后,然后是把if [ $RATEMIN1 -le 50 ] && [ $RATEMIN5 -ge 50 ] 改成 if [ $RATEMIN1 -ge 50 ] && [ $RATEMIN5 -le 50 ] 就有结果了~~
最佳答案
  • 五星知识达人网友:佘樂
  • 2019-12-24 00:42
#!/bin/bash
RATEMIN1=40
RATEMIN5=60
echo $RATEMIN1 -le 50
echo $RATEMIN5 -ge 50
if [ $RATEMIN1 -le 50 ] && [ $RATEMIN5 -ge 50 ]
then
for i in 1 2 3 4 5
do
eval value='$'RATEMIN$i
if [ ! -n "$value" ];then
continue
fi
if [ $value -ge 50 ]
then
echo "FUCK!"
break
fi
continue
done
fi
全部回答
  • 1楼网友:时间的尘埃
  • 2020-12-23 00:17
改成如下即可: RATEMIN1=40 RATEMIN5=60 if [ $RATEMIN1 -le 50 ] && [ $RATEMIN5 -ge 50 ] then for i in 1 2 3 4 5 do eval tmp=\${RATEMIN$i} if [ "$tmp" -ge 50 ] then echo "tmp=$tmp HI
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯