Linux学习方法攻略,大佬带你玩转Li

Linux云计算集群架构师

第二十二章跳出循环-shift参数左移-函数的使用

本节所讲内容:

22.1跳出循环

22.2Shift参数左移指令

22.3函数的使用

22.4实战-自动备份mysql数据库和nginx服务启动脚本

22.1跳出循环break和continue

在我们使用循环语句进行循环的过程中,有时候需要在未达到循环结束条件时强制跳出循环,那么Shell给我们提供了两个命令来实现该功能:break和continue

Break:跳出整个循环

Continue:跳过本次循环,进行下次循环

break概述:跳出当前整个循环或结束当前循环,在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句,后面如果什么也不加,表示跳出当前循环等价于break1,也可以在后面加数字,假设break3表示跳出第三层循环

continue概述:忽略本次循环剩余的代码,直接进行下一次循环;在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句

例1:写一个shell菜单,当按数字键4时退出,否则一直循环显示

[root

xuegod63~]#vimbreak-continue.sh

#!/bin/sh

whiletrue

do

  echo"*******************************"

  echo"Pleaseselectyouroperation:"

  echo"1Copy"

  echo"2Delete"

  echo"3Backup"

  echo"4Quit"

  echo"*******************************"

  readop

case$opin

1)

  continue#这里加了continue后,忽略本次循环剩余代码,后面内容都不执行了,直接进行下次一次循环

  echo"yourselectionisCopy"

  ;;

2)

  echo"yourselectionisDelete"

  ;;

3)

  echo"yourselectionisBackup"

  ;;

4)

  echo"yourselectionisExit"

  break#跳出循环体

  ;;

*)

  echo"invalidselection,pleasetryagain"

esac

done

例2:使用交互式方法批量添加用户

[root

bogonsh]#vimuseradd.sh

#!/bin/bash

echo"*********************"

read-p"请输入要创建的用户名:"name

read-p"请输入要创建的用户数:"num

read-p"请输入要创建用户密码:"pas

echo"*********************"

for((i=1;i=$num;i=i+1))

do

useradd$name$i/dev/null

echo"$pas"

passwd--stdin$name$i/dev/null

done

echo"创建用户完成,结果是..."

tail-$num/etc/passwd

vimuserdel.sh

#!/bin/bash

echo"******************"

read-p"请输入要删除的用户名:"name

read-p"请输入要删除的用户数:"num

echo"******************"

for((i=1;i=$num;i++))

do

if[$i-eq4];then

continue

#break

else

userdel-r$name$i/dev/null

fi

done

echo"删除用户完成,结果是..."

tail-$num/etc/passwd

[root

xuegod63~]#vimbreak1.sh

#!/bin/bash

while:

do

echo-n"输入1到5之间的数字:"

readaNum

case$aNumin

1

2

3

4

5)echo"你输入的数字为$aNum!"

;;

*)echo"你输入的数字不是1到5之间的!游戏结束"

break

;;

esac

done

[root

xuegod63~]#vimcontinue1.sh

#!/bin/bash

while:

do

echo-n"输入1到5之间的数字:"

readaNum

case$aNumin

1

2

3

4

5)echo"你输入的数字为$aNum!"

;;

*)echo"你输入的数字不是1到5之间的!"

continue

echo"游戏结束"

;;

esac

done

运行代码发现,当输入大于5的数字时,会执行continue忽略本次循环,执行下一次循环,语句echo"游戏结束"永远不会被执行

22.2Shift参数左移指令

shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)

  在扫描处理脚本程序的参数时,经常要用到的shift命令,如果你的脚本需要10个或10个以上的参数,你就需要用shift命令来访问第10个及其后面的参数

作用:每执行一次,参数序列顺次左移一个位置,$#的值减1,用于分别处理每个参数,移出去的参数,不再可用

例子:加法计算器

[root

xuegod63~]#vimshift.sh

#!/bin/bash

if[$#-le0];then

echo"没有足够的参数"

exit

fi

sum=0

while[$#-gt0]

do

sum=$((sum+$1))

shift

#shift2

done

echo"结果是"$sum

测试:

[root

xuegod63~]#bashshift.sh

resultis20

使用shift2

shshift.sh

resultis16

22.3函数的使用

函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数,要使用这个函数,只要使用这个函数名称就可以了。使用函数的好处:模块化,代码可读性强。

22.3.1函数创建语法

方法1:

functionname{

    


转载请注明:http://www.aierlanlan.com/tzrz/8234.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了