首页 > 系统相关 >linux下shell流程控制实例

linux下shell流程控制实例

时间:2023-09-16 19:01:13浏览次数:37  
标签:语句 bin shell 实例 echo while sh done linux

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语句使用。

标签:语句,bin,shell,实例,echo,while,sh,done,linux
From: https://blog.51cto.com/u_16077267/7495638

相关文章

  • 企业网拓扑图之小型办公局域网组网实例(一)
    拓扑结构设计是计算机网络设计的基础和起点,重要性是显而易见的。在任何情况下,网络拓扑设计都是以在满足可靠性和安全性的基础上尽可能地降低费用、减少时延,提高链路利用率为基本原则来安排网络节点间的连接,并以此为基础来形成网络的拓扑。接下来本文将结合网络拓扑设计来展示小型......
  • linux-压缩解压缩
    1、zip格式压缩   zip压缩文件名 源文件   zip -r 压缩文件名 源目录   zip解压缩   unzip 压缩文件 2、gz格式压缩   gzip源文件   源文件为.gz格式的压缩文件,源文件会消失   gzip-c源文件>压缩文件   ......
  • linux-搜索命令
    1、find[搜索范围][搜索条件]如:   1)find/-nameinstall.log   从根目录开始搜索搜索install.log文件   2)find/root-name"*[cd]"   从/root目录开始搜索搜索以c或者d结尾的文件 2、grep[选项]字符串文件名   字符串搜索命令grep......
  • Linux权限管理
    Linux基本权限1、权限:代表Linux中的用户能对文件和文件夹做哪些操作访问权限读取r:允许查看文件内容、显示目录列表写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录可执行x:允许运行程序、切换目录归属(所有权)属主:拥有该文件或目录的用户帐号属组:拥有该文件或目录......
  • C语言实例_解析GPS源数据
    一、GPS数据格式介绍GPS(全球定位系统)数据格式常见的是NMEA0183格式,NMEA0183格式是一种用于导航设备间传输数据的标准格式,定义了一套规范,使得不同厂商的设备可以通过串行通信接口(常见的是RS-232)进行数据交换。这个标准最初由美国航海电子协会(NationalMarineElectronicsAssociat......
  • Linux中可以建立新文件的命令
    整理了一些可以建立文件的命令首先,新建一个空目录$mkdirnewdir$cdnewdir/touchtouch命令是将每个文件的访问权限都更新为目前的时间,如果文件不存在则会创建一个新的文件。$touchfile1.txt$lsfile1.txtvimvim是使用vim编辑器打开一个文件,如果文件不存在,会创建一......
  • Linux 6.6 中的 SELinux 删除了 NSA 的引用
    导读SecurityEnhanced Linux (SELinux)二十年来一直是主线内核的一部分,它提供了一个实现访问控制安全策略的模块,现在广泛用于增强生产Linux服务器和其他系统的安全性。长期接触Linux的人可能不知道SELinux源自美国国家安全局(NSA)。但是现在Linux6.6中NSA的引......
  • 《LINUX设备驱动程序》学习笔记 ——03
    1.学习模块前的一些基础知识头文件:内核是一个特定的环境,对需要和它接口的代码有其自己的一些要求,所以大部分的模块代码中都会包含相当数量的头文件,其中有几个头文件是专门用于模块的,因此会出现在每个可装载的模块中:#include<linux/module.h>#include<linux/init.h>......
  • Linux find
    1.find介绍linux查找命令find是linux运维中很重要、很常用的命令之一,find用于根据指定条件的匹配参数来搜索和查找文件和目录列表,我们可以通过权限、用户、用户组、文件类型、日期、大小等条件来查找文件。2.find语法find语法find[查找路径][查找条件][处理动作]查找路径:指定的......
  • 《LINUX设备驱动程序》学习笔记 ——02
    1.编译模块构造内核模块之前,需要注意以下条件:正确版本的编译器、模块工具和其他必要的工具。太新的或太老的工具都会对使得模块构造后产生许多复杂的问题,因为内核源代码对编译器做了大量假定,因此新的(或旧的)编译器版本可能导致问题出现。另外,尽量运行和模块对应的内核版......