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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 编程 里面 if 嵌套 for 语句的匪夷所思的 事情!!相关的知识,希望对你有一定的参考价值。

下面是我的小代码:
#!/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 ] 就有结果了~~

参考技术A 改成如下即可:

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!"

break
fi
continue
done
fi
参考技术B #!/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本回答被提问者采纳

shell编程之if语法case语法while语句until语句for语句select语句

主要介绍shell基本语句的语法

if语句语法
1 单分支结构 (如果,那么)
if <条件测试> ;then 指令;fi
或者如下:
if <条件测试>
? then
?  指令
fi

2 双分支结构(如果,那么,否则。。。)

if <条件表达式>
? then
? 指令
else
? 指令
fi

多分支结构(如果,那么,否则如果,那么,否则。。。)

if <条件表达式>
? then
? 指令
elif <条件表达式>
? then
?  指令
else
? 指令
fi
其中elif可以有多个

case 语法

case “变量” in
?值1)
? 指令1 …
? ;;
?值 2)
? 指令 2 …
? ;;
?*)
? 指令3 …
esac

当变量值为值1 时 ,执行指令1,类推,都不符合执行最后*)的指令

while语句

while <条件表达式>
do
?指令..
done

说明:
1 while 对条件检测,如果成立执行指令,done后,又检测,如果成立,又执行一 次,直到不满足条件,停止循环
2 while ture 表示条件永远为真,会一直循环 ( while [ 1 ] 和while ture一样 )

while 循环按行读取文件的方式
方法一

exec < file
while read line
do
? 指令
done

方法二

cat file|while read line
do
? 指令
done

方法三

while read line
do
? 指令
done<file

until 语法

until <条件表达式>
do
?指令..
done

说明:会在条件不成立时,执行循环,条件成立停止

for语法

1 for 变量名 in 变量列表
do
?指令..
done

2 for ((exp1;exp2;exp3))
do
?指令..
done

说明:
for 后面双括号里是3个表达式,第一个是变量初始化,第二个为变量的范围,第三个为变量自加或自减,当第一个初始化值符合第二个变量范围时候,循环,否则,退出。

**select语句

select 变量名 [ in 菜单取值列表 ]
do
? 指令..
done

以上是关于shell 编程 里面 if 嵌套 for 语句的匪夷所思的 事情!!的主要内容,如果未能解决你的问题,请参考以下文章

shell里面的for循环

linux shell编程 if判断语句的判定条件

linux shell的if语句

linux脚本里,ssh 里可以嵌套for循环?怎么弄啊

Vue.js v-for中能不能嵌套使用v-if

Vue.js v-for中能不能嵌套使用v-if