shell脚本从入门到复杂七(循环)

一、if循环

语法格式如下:

单分支的if语句:

if condition

then

command1

command2

...

commandN

fi

双分支的if语句:

if condition

then

command1

command2

...

commandN

else

command

fi

多分支的if语句:

if condition1

then

command1

elif condition2

then

command2

else

commandN

fi

案例1:

if else单支循环可以直接在命令行组合运行

# if [ `awk -F: '/^root/ {print $3}' /etc/passwd` -eq 0 ];then ehco "true";fi

案例2:

双支循环判断当前shell环境

# vi chkshell.sh

#!/bin/bash

if [ $SHELL = "/bin/bash" ];then

echo "your shell is bash"

else

echo "your shell is not bash but $SHELL"

fi

案例3:

多支循环比较两个数的大小

# vi if1.sh

#!/bin/bash

a=10

b=20

if [ $a == $b ];then

echo "a is equal than b"

elif [ $a -gt $b ];then

echo "a is greater than b"

elif [ $a -lt $b ];then

echo "a is less than b"

else

echo "None of the condition met"

fi

二、for循环

格式:

for var in item1 item2 ... itemN

do

command1

command2

...

commandN

done

for ((expr1;expr2;expr3));do

command1

command2

...

commandN

done

案例1:

计算1到100的和

# vi for1.sh

#!/bin/bash

sum=0

for in in {1..100};do

let sum=$sum+$i

done

echo $sum

案例2:

计算1到100的和

# vi for2.sh

#!/bin/bash

sum=0

for((i=1;i<=100;i++));do

sum=$(($sum+$i))

done

echo $sum

三、while 语句

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

while condition

do

command

done

案例1:

计算1到100的和

# vi wihle1.sh

#!/bin/bash

sum=0

i=1

while [ $i -le 100 ];do

((sum+=1))

((i++))

done

echo $sum

四、until语句

until 循环执行一系列命令直至条件为 true 时停止。

until 循环与 while 循环在处理方式上刚好相反。

一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。

until 语法格式:

until condition

do

command

done

condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。

案例1:

计算1到100的和

# vi until1.sh

#!/bin/bash

sum=0

i=1

until [ $i -gt 100 ];do

((sum+=i))

((i++))

done

echo $sum

五、case语句

case循环:

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

case 值 in

模式1)

command1

command2

...

commandN

;;

模式2)

command1

command2

...

commandN

;;

esac

case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

案例1:

类似./nginx start这样的操作服务的脚本简单版

# vi case1.sh

#!/bin/bash

case $1 in

start)

echo "service is running"

;;

stop)

echo "service is stop"

;;

reload)

echo "service is relaod"

;;

*)

echo "usage:[start|stop|reload]"

;;

esac

# sh case1.sh start

service is running

案例2:

输入一个字符,判断该字符是字母、数字或是其他

# vi case2.sh

#!/bin/bash

read -p "press one key,then press return: " KEY

case $KEY in

[a-z]|[A-Z])

echo "It's a letter"

;;

[0-9])

echo "It's a digit"

;;

*)

echo "It's function keys,Spacebar other keys"

esac

六、跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。

6.1、break语句

break命令允许跳出所有循环(终止执行后面的所有循环)。

案例1:

脚本进入死循环,直到输入的字符在1到5之外

# vi break1.sh

#!/bin/bash

while :

do

echo -n "please enter 1 to 5: "

read num

case $num in

1|2|3|4|5)

echo "your input number is $num"

;;

*)

echo "your number is error,over"

break

;;

esac

done

案例2:

数字到5跳出循环

# vi break2.sh

#!/bin/bash

i=1

while [ $i -lt 10 ];do

echo $i

if [ $i -eq 5 ]

then

break

fi

((i+=1))

done

执行结果就是输出

1

2

3

4

5

6.2、continue语句

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

# vi continue1.sh

#!/bin/bash

while :

do

echo -n "please enter 1 to 5: "

read num

case $num in

1|2|3|4|5)

echo "your input number is $num"

;;

*)

echo "your number is error"

continue

echo "over"

;;

esac

done

执行结果是,当输入1到5之外的字符时不会跳出循环,语句 echo "over" 不会执行。

原文地址:http://blog.51cto.com/xiaoxiaozhou/2114368

时间: 2024-08-29 20:40:30

shell脚本从入门到复杂七(循环)的相关文章

8.17_Linux之bash shell脚本编程入门篇(三)之循环以及函数function的使用

bash shell脚本编程入门篇(三)之循环 什么是循环执行? 将某代码段重复运行多次 重复运行多少次: 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 相关命令:for, while, until,selet, for命令的使用 作用: 依次将列表中的元素赋值给"变量名"; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 命令格式: for 变量名 in 列表; do 循环体(正常执行的执行命令) 语句1 语句2 语句3 ... done 列表生成方式: (

shell脚本中用到的条件和循环语句

本博文介绍一下shell脚本中常用的条件和循环语句: 条件语句: 循环语句: 示例: if语句: eg1. eg2. 2.case语句: 简单的case语句: 配合循环的case语句: 3.for语句: 简单的for语句:eg1. eg2. 和case搭配的for语句:eg3. 4.while语句: eg1. eg2. 5.util语句: 6.select语句:

Shell脚本快速入门

读研几年主要做的是控制领域的开发研究,做的硬件以及底层开发比较多.现在毕业了,开始发力软件领域,那么就让我从最简单基础的shell编程开始吧争取打扎实基础. 从程序员的角度来看,Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个L

8.15_Linux之bash shell脚本编程入门篇(二)以及文件查找和压缩的使用

bash shell脚本编程入门篇(二) read命令的使用 作用: 使用read来把输入值分配给一个或多个shell变量: -p指定要显示的提示 -t TIMEOUT read从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量 EX.read -p "Enter a filename:" FILE 条件选择之if的使用 if的作用:选择执行(注意:if语句可嵌套) 单分支 if 判断条件;then 条件为真的分支代码 fi EX.单分支案例 双分支 if

08 bash特性--shell脚本编程入门

shell脚本编程入门 编程语言介绍 变量 变量:就是给计算机内存中的一段空间命令,命令的这个空间就叫做变量,而再给这个空间放入值的过程,我们就叫做给变量赋值: bash下的变量的内部数据类型:(这是数据在内存中存放的格式,默认情况下,shell程序下一班都不会去申明数据类型,所以,我们的bash程序默认数据为字符类型) 字符型(string) 数值:整型(int).浮点型 布尔类型:真假 同时,脚本一般在执行的时候都会自动启动一个子shell进程,命令行中的启动的脚本会继承当前shell环境变

shell脚本基础入门(二)

以下为本教程的<入门篇>,适于初学者快速入门以及老手查缺补漏. 第一招 HelloWorld 第一式:echo echo "Hello World" echo -n "Hello World" # 不带换行 echo -e '\e[0;33;1mHello\e[0m World' # 带颜色的玩法 echo -e '\e[0;33;4mHello\e[0m World' # 带颜色+下划线 echo -e '\e[0;33;5mHello\e[0m Wo

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

Shell脚本基础入门

一.shell脚本介绍 1.1 开头(环境使用shebang机制) #!/bin/bash 必须写在文件首行 符号#!用来告诉系统它后面的参数是用来执行该文件的程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执行: 编译 chmod +x filename 这样才能用./filename或source filename 来运行. 1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我建议在程序中使用注释.如果使用了注释,那么即使相当长的时间内没

《跟老男孩学Linux运维之shell编程实战》-第一章 shell脚本初步入门

本文是在学习<跟老男孩学Linux运维之shell编程实战>这本书时记录的知识点.看了这本书,我受益匪浅,当然这仅是我个人观点.下面我们言归正传,开始了解一下shell脚本吧! shell本身是一个命令解释器,它的作用是解释执行用户输入的命令及程序等. shell脚本语言的种类:sh.ksh.bash.csh.tcsh,Linux中主流的shell是bash,所以本文及后续shell脚本以bash为主. 那我们如何查看Linux系统中默认的shell? [[email protected] ~