我是靠谱客的博主 还单身茉莉,最近开发中收集的这篇文章主要介绍Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.shell中的for循环

1.for循环的语法格式

        shell中的 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致。

        常用的for循环结构有三种:

粗略的结构:

for    条件

do

          循环主体

done

<1>语法一:

for   变量    in   值1  值2   值3...

do

        循环主体

done

或者

for   变量    in   {起始值..终止值}                  #这里面的起始值和终止值必须是纯数字,不能是$a,即不能是变量的值

do

        循环主体/命令

done

示例1:

示例2:

<2>语法二:

for   变量    in     `命令`

do

        循环主体

done

示例3:

<3>语法三:

for   ((初始值;循环控制;变量变化))

do

        循环主体

done

示例4:

2.for的嵌套循环

3.for循环的练习题

<1>练习1:编写脚本测试172.25.254网段中的主机网是否是通的。

如果是通的,就显示172.25.254.主机号  is up;如果是不通的,就显示172.25.254.主机号  is  down。

脚本内容

脚本运行结果

<2>练习2:编写脚本实现倒计时10秒。

显示 Time   秒数

脚本内容

脚本运行结果

<3>练习3:编写脚本实现从输入的分钟数和秒数开始改进行时间的倒计时。

显示 Time   分钟:秒

方法一:将分钟数化为秒数

脚本内容

 #!/bin/bash
read   -p   "请输入分钟数和秒数:"   a   b
let   time=$a*60+$b
#for   i   in   {$time..1}                  #这行代码的写法是错误的。{起始值  终止值},这里的起始值和终止值都必须是纯数字,不能写成某个变量的值
for   ((i=$time;i>0;i--))
do
        echo   -n   "TIME   `expr   $i  /  60`:`expr   $i  %  60` "
        echo   -n   -e   "r"
        sleep   1
done

脚本运行结果

方法二:利用for双循环实现

脚本内容

 

脚本运行结果

 

<4>编写脚本实现打印9*9乘法表。

显示1*1=1

        2*1=2   2*2=4

        .................................

写法一:

脚本内容

脚本运行结果

写法二:

脚本内容

脚本运行结果

二.shell中的while循环

1.while循环的语法格式

         for循环适用于事先知道循环的次数,对于实现不知道循环的次数,for循环将会束手无策。而while循环可以解决实现不知道循

环次数这类问题。对于事先知道循环次数的问题,for循环和while循环是相通的,for循环能解决的问题,while循环也可以解决。

        常用的while循环的结构有三种:

粗略的结构:

while   条件

do

          循环主体

done

<1>语法一:

初始值

while  [  条件判断语句  ]

do

           循环主体

           变量变化                   #这里变量变化的方式有两种,一种是((a++)),另外一种是a=`expr  $a  +  1`

done

示例1:

<2>语法二:

初始值

while  ((条件判断语句))

do

           循环主体

           变量变化                                   #这里变量变化的方式有两种,一种是((a++)),另外一种是a=`expr  $a  +  1`

done

示例2:

<3>语法三:死循环(不同于for循环的地方,能解决实现不知道循环次数的问题的原因所在)

while   true

do

           循环主体

done

示例3:

2.while循环的练习题

编写一个脚本,使用while循环语句新建用户xin{1..20},并且设置这些用户的密码都为"123456"

脚本内容

脚本执行结果

三.shell中的if条件判断(else语句是可以没有的)

1.if条件判断的语法格式

        常用的if条件判断有三种结构:

<1>单分支if语句

if    条件判断;then                    #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句

        语句体

fi

示例1:

<2>双分支if语句

if    条件判断;then                    #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句

        语句体1

else

        语句体2

fi

示例2:

<3>多分支if语句

if    条件判断;then                   #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句

        语句体1

elif   条件判断;then                 #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句

        语句体2

elif   条件判断;then                 #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句

         语句体3

...                         #表示可以有多个

else

         语句体...

fi

示例3:

四.shell中的case条件判断(*)语句是可以没有的)

1.case条件判断的语法格式

        case条件判断适用于需要进行多重分支的应用情况。case条件判断只针对于条件判断是某个(单个匹配模式)或某些(合并

匹配模式)具体的情况而不是一个无限的区间(比如0<a<2,这个无限的区间,为什么是无限区间呢,这是因为它的值是无穷多

个)。对于条件判断是某个(单个匹配模式)具体的情况,case条件判断能实现的效 果,if条件判断也可以实现同样的效果。

        case语句结构特点如下:

  1. case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。
  2. 双分号";;"表示命令序列结束。
  3. 匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。
  4. 最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。

        常用的case条件判断的结构有两种:

<1>语法一:单个匹配模式

case   $变量名    in

           模式1)

           命令序列1

           ;;

          模式2)

           命令序列1

           ;;

          .....                          #表示可以有多个

           *)

           默认执行的序列

           ;;

esac

示例1:

<2>语法二:合并匹配模式

case   $变量名    in

           模式1|模式2|模式3|......)              #......表示可以有多个

           命令序列1

           ;;

          模式4|模式5|.......)                        #......表示可以有多个

           命令序列1

           ;;

          .....                          #表示可以有多个

           *)

           默认执行的序列

           ;;

esac

示例2:

2.case条件判断的练习题

编写脚本,实现交互式执行对应的程序功能

https://www.jb51.net/article/43968.htm

第一种写法:(使用echo打印)

脚本内容

脚本执行结果

第二种写法:(使用awk命令中的print打印)

脚本内容

脚本运行结果

所有写法汇总:


脚本运行结果:

最后

以上就是还单身茉莉为你收集整理的Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断)的全部内容,希望文章能够帮你解决Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部