设为首页 收藏本站
查看: 191|回复: 0

[经验分享] rhel6.5 case for while语句

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-15 08:21:37 | 显示全部楼层 |阅读模式
所讲内容:
case: 流控制语句
循环语句for…done和while语句
使用(()) 扩展shell中算数运算算使用方法
循环语句嵌套
跳出循环:break和continue
  • case:流控制语句

1、case语句作用
case语句用于多种情况的条件判断,当满足某种条件时,就会执行条件下的语句
2、case语法
case 变量 in
    字符串1)
        语句列表1
        ;;
    字符串2)
         语句列表2
         ;;
    ….
    字符串n)
        语句列表n
       ;;
    *)
         默认执行的语句
         ;;
esac
3、case语句执行流程
wKiom1ZneA7RDmekAABRUF1Tp94048.jpg
4、case语句举例
[iyunv@test~]#vi testcase.sh#根据不同的输入,显示不同的结果
#!/bin/bash
#Thisis a test case shell
read-p "please input a number (1-4):" num
case$num in
1)
echo"your input number is 1"
;;
2)
echo"your input number is 2"
;;
3)
echo"your input number is 3"
;;
4)
echo"your input number is 4"
;;
*)
echo"your input number is wrong!"
;;
Esac
[iyunv@test~]#sh testcase.sh#测试结果
pleaseinput a number (1-4):1
yourinput number is 1
[iyunv@test~]#sh testcase.sh
pleaseinput a number (1-4):6
yourinput number is wrong!

  • 循环语句

1、for…done语句
1)  for…done语句执行过程
每次循环都会在列表中取值,然后执行do后面的语句,直至列表中的所有值全部取完后循环结束
2)for…done语句语法
for 变量 in 取值列表
do
语句列表
done

##取值列表可以是文件、范围或者指定的值
3)for…done语句举例
(1)  取值列表为文件
[iyunv@test~]#echo aaabbb ccc ddd> test.txt
[iyunv@test~]#vi file_for1.sh#在列表中取值,然后打印出来
#!/bin/bash
#Thisis a test for..done shell1
file=`cat/root/test.txt`
foriin $file
do
echo$i
done
[iyunv@test~]#sh file_for1.sh#测试结果
aaa
bbb
ccc
ddd
(2)  取值列表为范围
[iyunv@test~]#vi file_for2.sh#测试网段内主机存活情况
#!/bin/bash
#Thisis a test for..done shell2
PREFIX=10.0.1.
foriin {200..210}
do
echo-n "${PREFIX}$i "
ping-c1 -i0.1   ${PREFIX}${i} >/dev/null2>&1
if ["$?" -eq0 ];then
echo"OK"
else
echo"Failed"
fi
done
[iyunv@test~]#sh file_for2.sh#测试结果
10.0.1.200OK
10.0.1.201OK
10.0.1.202Failed
10.0.1.203Failed
10.0.1.204Failed
10.0.1.205OK
10.0.1.206OK
10.0.1.207OK
10.0.1.208Failed
10.0.1.209Failed
10.0.1.210Failed
还可以用下面这种方式表示
[iyunv@test~]#vi file_for3.sh#计算1到100的和
#!/bin/bash
#Thisis a test for..done shell3
ans=0
for((i=1;i<=100;i++))
do
letans+=$i
done
echo$ans
[iyunv@test~]#sh file_for3.sh#测试结果
5050
(3)取值列表为指定的值
[iyunv@test~]#vi file_for4.sh   #循环打印列表内的数值
#!/bin/bash
##Thisis a test for..done shell4
foriin "123" "456" "789"
do
echo$i
done
[iyunv@test~]#sh file_for4.sh#测试结果
123
456
789
2、while语句
1)while语句执行过程
每次循环都会判断while后面的条件是否成立,如果成立执行do后面的语句,如果不成立则循环结束
2)while语法
while 条件                    ##条件可以使用布尔值
do
语句列表
done
3)while语句举例
[iyunv@test~]#vi while.sh#循环打印满足条件的结果
#!/bin/bash
#Thisis a test while shell
x=1
while[ $x -le 10 ]
do
echo$x
letx=x+1
done
[iyunv@test~]#sh while.sh#测试结果
1
2
3
4
5
6
7
8
9
10

  • 使用(()) 扩展shell中算数运算使用方法

1、双括号的作用
1)整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。
2)只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。作不同进位(如二进制、八进制、十六进制)运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制)
3)单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6
4)常用于算术运算比较,双括号中的变量可以不使用$符号前缀。括号内支持多个表达式用逗号分开。只要括号中的表达式符合C语言运算规则,比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}。再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]。
2、双括号的语法
((表达式1;表达式2…))
3、双括号举例
[iyunv@test~]#vi shuangkuohao.sh     ##列出小于100的2的幂值
#!/bin/bash
#Thisis a test (()) shell
echo"The while loop example."
echo
VAR1=1
while((VAR1<100))
do
echo"Value of the variable is : $VAR1"
        ((VAR1=VAR1*2))
done
echo
echo"The loop execution is finished"
[iyunv@test~]#shshuangkuohao.sh#测试结果
Thewhile loop example.

Valueof the variable is : 1
Valueof the variable is : 2
Valueof the variable is : 4
Valueof the variable is : 8
Valueof the variable is : 16
Valueof the variable is : 32
Valueof the variable is : 64

Theloop execution is finished

  • 循环语句嵌套

举例:
[iyunv@test~]#visanjiao.sh#循环嵌套用指定符号打印出三角形
#!/bin/bash
#Thisis a test Loop nest shell
read-p "Please enter the number of rows to print:" line
read-p "Please enter the characters Print:" char
a=1
while[ $a  -le $line ]                       #外循环控制打印出的行数
do b=1
        while [ $b -le $a ]                  #内循环控制每行打印的个数
        do echo -n "$char"                   #-n为输出的内容不换行
        b=` expr $b + 1 `
done
echo
a=`expr$a + 1`
done
[iyunv@test~]#shsanjiao.sh#测试结果
Pleaseenter the number of rows to print:5#输入打印的行数
Pleaseenter the characters Print:*    #输入要打印的符号
*
**
***
****
*****
  • 跳出循环:break和continue

1、break和continue在循环语句中的作用
break:跳出整个循环
continue:跳出本次循环,进行下次循环
举例:
[iyunv@test~]#vitest.sh#输入一个指定的数字,如果输入错误则重新输入,只有在输入正确的数字才会退出
#!/bin/bash
#Thisis test break continue shell
while[ ture ]
do
read-p "please input a number:" num
if [$num -eq 0 ] ; then
echo"you input is ok!"
break
else
echo"please input again!"
continue
fi
done
[iyunv@test~]#shtest.sh#测试结果
pleaseinput a number:1
pleaseinput again!
pleaseinput a number:2
pleaseinput again!
pleaseinput a number:0
youinput is ok!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151256-1-1.html 上篇帖子: rhel7 MBR磁盘管理 下篇帖子: 文件查找find命令的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表