专栏首页北京马哥教育Linux Shell 流程控制语句实例

Linux Shell 流程控制语句实例

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

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

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

if 条件测试语句 then action [elif 条件 action else action ] fi

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

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

如:

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

实例:(test.sh)

#!/bin/sh scores=40; if [[ $scores -gt 90 ]]; then echo "very good!"; elif [[ $scores -gt 80 ]]; then echo "good!"; elif [[ $scores -gt 60 ]]; then echo "pass!"; else echo "no pass!"; fi;

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

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

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

语法结构:

1.for … in 语句 for 变量 in seq字符串 do action done

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

实例(testfor.sh):

#!/bin/sh for i in $(seq 10); do echo $i; done;

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

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

for((赋值;条件;运算语句)) do action done;

实例(testfor2.sh):

#!/bin/sh for((i=1;i<=10;i++));do echo $i; done;

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

while语句结构

while 条件语句 do action done;

实例1:

#!/bin/sh i=10; while [[ $i -gt 5 ]];do echo $i; ((i--)); done;

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

sh testwhile1.sh

10

9

8

7

6

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

#!/bin/sh while read line;do echo $line; 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循环语句

语法结构:

until 条件 do action done

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

实例(testuntil.sh):

#!/bin/sh a=10; until [[ $a -lt 0 ]];do echo $a; ((a—)); done;

结果:

sh testuntil.sh

10

9

8

7

6

5

4

3

2

1

0

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

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

语法结构

case $arg in pattern | sample) # arg in pattern or sample ;; pattern1) # arg in pattern1 ;; *) #default ;; esac

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

* 任意字串

? 任意字元

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

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

| 多重选择

实例:

#!/bin/sh case $1 in start | begin) echo "start something" ;; stop | end) echo "stop something" ;; *) echo "Ignorant" ;; esac

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

testcase.sh start

start something

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

语法:

select 变量name in seq变量 do action done

实例:

#!/bin/sh select ch in "begin" "end" "exit" do case $ch in "begin") echo "start something" ;; "end") echo "stop something" ;; "exit") echo "exit" break; ;; *) echo "Ignorant" ;; esac done;

运行结果:

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

以上是shell的流程控制语句,条件,循环,选择。 欢迎讨论交流!

作者:程默, www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html


本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:程默

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 搭建python数据分析平台

    基本结构 其实没什么高深的东西,无非是常用的那一套: pandas, numpy, matplotlib… 但是为了更方便使用,加持了 jupyter note...

    小小科
  • 一个cheat命令 == Linux命令小抄大全

    当你要执行一个linux命令,在这个命令参数选项众多时,你一般怎么做?对,我们大多数人都会去求助man命令。此外,linux上帮助相关的命令还有”help””w...

    小小科
  • Python 错误和异常小结

    引言 这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。 1.Python异常类 Python...

    小小科
  • 如何获取公众号里面的歌曲

    王小婷
  • [译] 更可靠的 React 组件:清楚易懂的可表达性

    原文摘自:https://dmitripavlutin.com/7-architectural-attributes-of-a-reliable-react-c...

    江米小枣
  • Codeup ,一个全新的适用于企业级代码管理的平台

    源自阿里巴巴自研代码平台,支撑百万级代码库和数万工程师协作。自适应容量分配,让你的业务增长不再受代码库数量限制。同时为了保障企业代码安全,提供企业间数据隔离及企...

    Peter谭金杰
  • git命令使用笔记1

    Qt君
  • TensorFlow实现简单BP神经网络

    这是自己学习tensorflow的基本操作后,实现的最简单的BP神经网络模型。数据集用的时之前在博文:利用BP神经网络对语音特征信号数据集进行分类中的语音信号数...

    AI那点小事
  • 0.38秒!MIT 机器人还原3阶魔方的时间再破记录

    作者 | Leo 魔方大家应该都玩过,能在短时间内还原魔方的孩子常常被很多家长认为是聪明的表现,人类目前还原三阶魔方的记录为4.69秒。 不过和围棋不一样,在这...

    AI科技大本营
  • 魔方全能小王子降临:一个完全不依赖人类知识的AI

    这只AI 完全不需要依靠人类的知识来解魔方,有速度有准度。据说没有它复原不了的魔方。除了这一种——

    量子位

扫码关注云+社区

领取腾讯云代金券