linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例-阿里云开发者社区

开发者社区> 云栖希望。> 正文

linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

简介:
+关注继续查看

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;

 

image

条件测试有:[[]],[],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;

image

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;

image

 

 

  • 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;

运行结果:

image

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

本文转自博客园知识天地的博客,原文链接:linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
理解C语言——从小菜到大神的晋级之路(2)——开发环境的选择和HelloWorld程序
视频观看:点击这里 一、常用系统及IDE简介        常言道,工欲善其事必先利其器。除了少数奇葩之外,大部分人应不会去使用记事本或者Word文档去编程吧?几乎所有编程语言都需要一个高效易用的开发环境,C语言也不例外。
1463 0
嵌入式Linux系统运行流程图
/************************************************************************ * 嵌入式Linux系统运行流程图 * 说明: * 本文主要记录梳理嵌入式系统硬件、软件运行流程。
675 0
for(条件1;条件2;条件3)
for(条件1;条件2;条件3) { //语句 } 执行顺序是条件1->条件2->语句->条件3->条件2->语句->条件3->条件2…….. 如果条件2为true,则一直执行。
496 0
13.Linux shell编程(条件语句和标准输出重定向)
(创建于2018/1/31) 条件语句 shell中的条件语句必须以fi结尾,否则会报错syntax error: unexpected end of file if else then 这里的test命令意思就是test后的条件如果成立,则它就是0(...
741 0
你了解Spring事物控制特性吗
一.事务特性原子性:强调事务的不可分割一致性:强调的是事务的执行的前后,数据的完整性要保持一致隔离性:一个事务的执行不应该受到其他事务的干扰持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库 二.如果不考虑隔离性,会引发一些安全性问题读问题脏读:一个事务读到另一个事务还没有提交的数据不可重复读:一个事务读到了另一个事务已经提交的update数据,导致在当前的事务中多次查询数据不一致虚读/幻读:一个事务读到另一个事务已经insert数据,导致当前事务中多次查询结果不一致 写问题引发两类丢失更新 三.解决引发的读问题设置事务的隔离级别read uncommitted :未提交读。
740 0
+关注
云栖希望。
我是个随便的人
761
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载