ITPub博客

首页 > > > Linux Shell 流程控制语句?这几个实例你得看看

Linux Shell 流程控制语句?这几个实例你得看看

作者:u_453e1a12781dea 时间:2017-09-11 16:56:59 0 删除 编辑
点击蓝色字关注"CU技术社区" 一起玩耍哦~

作者:程默

链接:www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html


Linux shell 有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。


一、shell条件语句(if用法)


if语句结构 [if/then/elif/else/fi]


  1. if 条件测试语句

  2. then

  3. action

  4. [elif 条件

  5. action

  6. else

  7. action

  8. ]

  9. fi


如果对于:条件测试语句不是很清楚,可以参考:Linux shell 逻辑运算符、逻辑表达式详解


shell命令,可以按照分号分割,也可以按照换行符分割。如果想一行写入多个命令,可以通过“’;”分割。


如:


  1. [chengmo@centos5 ~]$ a=5;if [[ a -gt 4 ]] ;then echo 'ok';fi;

  2. ok


实例:(test.sh)


  1. #!/bin/sh

  2. scores=40;

  3. if [[ $scores -gt 90 ]]; then

  4. echo "very good!";

  5. elif [[ $scores -gt 80 ]]; then

  6. echo "good!";

  7. elif [[ $scores -gt 60 ]]; then

  8. echo "pass!";

  9. else

  10. echo "no pass!";

  11. fi;



条件测试有:[[]],[],test 这几种,注意:[[]] 与变量之间用空格分开。


二、循环语句(for,while,until用法):


for循环使用方法(for/do/done)

语法结构:


  1. 1.for … in 语句

  2. for 变量 in seq字符串

  3. do

  4. action

  5. done


说明:seq字符串 只要用空格字符分割,每次for…in 读取时候,就会按顺序将读到值,给前面的变量。


实例(testfor.sh):


  1. #!/bin/sh

  2. for i in $(seq 10); do

  3. echo $i;

  4. done;



seq 10 产生 1 2 3 。。。。10空格分隔字符串。


2.for((赋值;条件;运算语句))


  1. for((赋值;条件;运算语句))

  2. do

  3. action

  4. done;


实例(testfor2.sh):


  1. #!/bin/sh

  2. for((i=1;i<=10;i++));do

  3. echo $i;

  4. done;


while循环使用(while/do/done)


while语句结构


  1. while 条件语句

  2. do

  3. action

  4. done;


实例1:


  1. #!/bin/sh

  2. i=10;

  3. while [[ $i -gt 5 ]];do

  4. echo $i;

  5. ((i--));

  6. done;


运行结果:========================


sh testwhile1.sh

10

9

8

7

6


实例2:(循环读取文件内容:)


  1. #!/bin/sh

  2. while read line;do

  3. echo $line;

  4. done < /etc/hosts;


运行结果:===================


sh testwhile2.sh

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 centos5 localhost.localdomain localhost


until循环语句


语法结构:


  1. until 条件

  2. do

  3. action

  4. done


意思是:直到满足条件,就退出。否则执行action.


实例(testuntil.sh):


  1. #!/bin/sh

  2. a=10;

  3. until [[ $a -lt 0 ]];do

  4. echo $a;

  5. ((a—));

  6. done;


结果:


sh testuntil.sh


10

9

8

7

6

5

4

3

2

1

0

三、shell选择语句(case、select用法)



case选择语句使用(case/esac)

语法结构


  1. case $arg in

  2. pattern | sample)

  3. # arg in pattern or sample

  4. ;;

  5. pattern1)

  6. # arg in pattern1

  7. ;;

  8. *)

  9. #default

  10. ;;

  11. esac


说明:pattern1 是正则表达式,可以用下面字符:


* 任意字串

? 任意字元

[abc] a, b, 或c三字元其中之一

[a-n] 从a到n的任一字元

| 多重选择


实例:


  1. #!/bin/sh

  2. case $1 in

  3. start | begin)

  4. echo "start something"

  5. ;;

  6. stop | end)

  7. echo "stop something"

  8. ;;

  9. *)

  10. echo "Ignorant"

  11. ;;

  12. esac


运行结果:======================


testcase.sh start

start something


select语句使用方法(产生菜单选择)


语法:


  1. select 变量name in seq变量

  2. do

  3. action

  4. done


实例:


  1. #!/bin/sh

  2. select ch in "begin" "end" "exit"

  3. do

  4. case $ch in

  5. "begin")

  6. echo "start something"

  7. ;;

  8. "end")

  9. echo "stop something"

  10. ;;

  11. "exit")

  12. echo "exit"

  13. break;

  14. ;;

  15. *)

  16. echo "Ignorant"

  17. ;;

  18. esac

  19. done;


运行结果:

说明:select是循环选择,一般与case语句使用。


以上是shell的流程控制语句,条件,循环,选择。 


金秋十月与你饮酒论道

SACC2017

作为国内最受欢迎的架构师盛会,2017 第九届中国系统架构师大会 (SACC) 将于将于 2017 年 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。


大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。

点击“阅读原文”,立享8.8折购票优惠哦~

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    1982
  • 访问量
    18077