忘了再学Shell流程控制,特殊流程控制语句如何改写为长尾词?

2026-04-18 03:241阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1566个文字,预计阅读时间需要7分钟。

忘了再学Shell流程控制,特殊流程控制语句如何改写为长尾词?

目录

1.特殊流程控制语句介绍

2.exit语句

3.break语句

4.continue语句

5.特殊流程控制语句介绍

Shell程序或其他程序,都是顺序执行的,第一行执行完再执行第二行。

目录
  • 1、特殊流程控制语句介绍
  • 2、exit语句
  • 3、break语句
  • 4、continue语句

1、特殊流程控制语句介绍

Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行,以此类推,依次执行。

而流程控制语句,如:

  • if条件判断语句,你只有条件成立了,才能够执行,否则就不执行其中的程序,这就会跳过一些执行命令。
  • for循环也是流程控制类语句,是重复执行指定次数的相同代码。

除了上面的条件判断语句和循环语句外,还有特殊流程控制语句。

比如:exit语句、break语句、continue语句。

2、exit语句

系统有一个exit命令,用于退出当前用户的登录状态。

可是在Shell脚本中,exit语句是用来退出当前脚本的。也就是说,在Shell脚本中,只要碰到了exit语句,后续的程序就不再执行,而直接退出脚本。

exit的语法如下:

exit [返回值]

  • 如果exit语句之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。可以通过查询$?这个变量,来查看返回值。
  • 如果exit语句之后没有定义返回值,脚本执行之后的返回值是,执行exit语句之前,最后执行的一条命令的返回值。

写一个exit的例子:
需求:判断输入是否为纯数字。

#!/bin/bash # 演示exit的作用 # 接收用户的输入,并把输入赋予变量num read -p "Please input a number:" -t 30 num # 如果变量num的值是数字,则把num的值替换为空,否则不替换 # 把替换之后的值赋予变量y y=$(echo $num | sed 's/[0-9]//g' ) # 说明: # 就是通过sed命令,把变量num值中的每一个字符,只要是0-9的内容,就替换为空。 # 最后如果y的值最后为空,证明num变量中的内容全部为数字,因为全部被替换了。 # 如果y的值最后不为空,证明num变量中的内容有非数字,即num非纯数字。 # 判断变量y的值如果不为空,输出报错信息, # 退出脚本,退出返回值为18 if [ -n "$y" ] then echo "Error!Please input a number!" exit 18 # 说明: # 如果输入的不是数字,上面这两句脚本命令会执行, # exit语句一旦执行脚本就会终止。 else # 如果没有退出脚本,则打印变量num中的数字 echo "The number is:$num"

执行该脚本

# 给Shell脚本赋予执行权限 [root@localhost sh]# chmod 755 exit.sh # 执行脚本 [root@localhost sh]# ./exit.sh # 输入abc please input num: abc # 脚本返回请输入数字 please input number, error!!!! # 查看$?变量,返回18,和我们脚本中设定的一样。 [root@localhost sh]# echo $? 18 # 再次执行脚本,输入123 [root@localhost sh]# ./exit.sh please input num:123 # 脚本返回结果是输入的数字 # 证明脚本符合需求。 123 3、break语句

特殊流程控制语句break语句的作用,当程序执行到break语句时,会结束整个循环(也就是跳出这个循环,继续之后后边的命令)。

continue语句也是结束循环的语句,不过continue语句跳过当前循环,继续执行下一次循环。

看下示意图解释下break语句:

举个例子:

先编写一个不加break语句的脚本break1.sh

[root@localhost sh]# vim sh/break1.sh #!/bin/bash # 输出10次变量i的值 #循环十次 for((i=1;i<=10;i=i+1)) do # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 break1.sh [root@localhost sh]#./break1.sh 1 2 3 4 5 6 7 8 9 10

再编写一个加break语句的脚本break2.sh

[root@localhost ~]# vim sh/break2.sh #!/bin/bash # 输出10次变量i的值 # 循环十次 for((i=1;i<=10;i=i+1)) do # 如果变量i的值等于4 if[ "$i" -eq 4 ] then # 退出整个循环 break fi # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 break2.sh [root@localhost sh]#./break2.sh 1 2 3

上面两个脚本的对比,可以看出当执行完break语句后,直接跳出了整个for循环。

4、continue语句

continue语句也是结束流程控制的语句。如果在循环中,continue语句只会结束当前单次循环,

画个示意图来说明下continue语句:

举个例子:

直接编写一个加continue语句的脚本continue1.sh

忘了再学Shell流程控制,特殊流程控制语句如何改写为长尾词?

来和上边的break语句中的两个脚本进行对比。

[root@localhost ~]# vim sh/continue1.sh #!/bin/bash # 输出10次变量i的值 # 循环十次 for((i=1;i<=10;i=i+1)) do # 如果变量i的值等于4 if[ "$i" -eq 4 ] then # 退出整个循环 continue fi # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 continue1.sh [root@localhost sh]#./continue1.sh 1 2 3 5 6 7 8 9 10

从上面结果可以看出,continue语句是把第四个循环跳过去了,然后继续执行第5次循环。

这就是continue语句和break语句的区别。

本文共计1566个文字,预计阅读时间需要7分钟。

忘了再学Shell流程控制,特殊流程控制语句如何改写为长尾词?

目录

1.特殊流程控制语句介绍

2.exit语句

3.break语句

4.continue语句

5.特殊流程控制语句介绍

Shell程序或其他程序,都是顺序执行的,第一行执行完再执行第二行。

目录
  • 1、特殊流程控制语句介绍
  • 2、exit语句
  • 3、break语句
  • 4、continue语句

1、特殊流程控制语句介绍

Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行,以此类推,依次执行。

而流程控制语句,如:

  • if条件判断语句,你只有条件成立了,才能够执行,否则就不执行其中的程序,这就会跳过一些执行命令。
  • for循环也是流程控制类语句,是重复执行指定次数的相同代码。

除了上面的条件判断语句和循环语句外,还有特殊流程控制语句。

比如:exit语句、break语句、continue语句。

2、exit语句

系统有一个exit命令,用于退出当前用户的登录状态。

可是在Shell脚本中,exit语句是用来退出当前脚本的。也就是说,在Shell脚本中,只要碰到了exit语句,后续的程序就不再执行,而直接退出脚本。

exit的语法如下:

exit [返回值]

  • 如果exit语句之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。可以通过查询$?这个变量,来查看返回值。
  • 如果exit语句之后没有定义返回值,脚本执行之后的返回值是,执行exit语句之前,最后执行的一条命令的返回值。

写一个exit的例子:
需求:判断输入是否为纯数字。

#!/bin/bash # 演示exit的作用 # 接收用户的输入,并把输入赋予变量num read -p "Please input a number:" -t 30 num # 如果变量num的值是数字,则把num的值替换为空,否则不替换 # 把替换之后的值赋予变量y y=$(echo $num | sed 's/[0-9]//g' ) # 说明: # 就是通过sed命令,把变量num值中的每一个字符,只要是0-9的内容,就替换为空。 # 最后如果y的值最后为空,证明num变量中的内容全部为数字,因为全部被替换了。 # 如果y的值最后不为空,证明num变量中的内容有非数字,即num非纯数字。 # 判断变量y的值如果不为空,输出报错信息, # 退出脚本,退出返回值为18 if [ -n "$y" ] then echo "Error!Please input a number!" exit 18 # 说明: # 如果输入的不是数字,上面这两句脚本命令会执行, # exit语句一旦执行脚本就会终止。 else # 如果没有退出脚本,则打印变量num中的数字 echo "The number is:$num"

执行该脚本

# 给Shell脚本赋予执行权限 [root@localhost sh]# chmod 755 exit.sh # 执行脚本 [root@localhost sh]# ./exit.sh # 输入abc please input num: abc # 脚本返回请输入数字 please input number, error!!!! # 查看$?变量,返回18,和我们脚本中设定的一样。 [root@localhost sh]# echo $? 18 # 再次执行脚本,输入123 [root@localhost sh]# ./exit.sh please input num:123 # 脚本返回结果是输入的数字 # 证明脚本符合需求。 123 3、break语句

特殊流程控制语句break语句的作用,当程序执行到break语句时,会结束整个循环(也就是跳出这个循环,继续之后后边的命令)。

continue语句也是结束循环的语句,不过continue语句跳过当前循环,继续执行下一次循环。

看下示意图解释下break语句:

举个例子:

先编写一个不加break语句的脚本break1.sh

[root@localhost sh]# vim sh/break1.sh #!/bin/bash # 输出10次变量i的值 #循环十次 for((i=1;i<=10;i=i+1)) do # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 break1.sh [root@localhost sh]#./break1.sh 1 2 3 4 5 6 7 8 9 10

再编写一个加break语句的脚本break2.sh

[root@localhost ~]# vim sh/break2.sh #!/bin/bash # 输出10次变量i的值 # 循环十次 for((i=1;i<=10;i=i+1)) do # 如果变量i的值等于4 if[ "$i" -eq 4 ] then # 退出整个循环 break fi # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 break2.sh [root@localhost sh]#./break2.sh 1 2 3

上面两个脚本的对比,可以看出当执行完break语句后,直接跳出了整个for循环。

4、continue语句

continue语句也是结束流程控制的语句。如果在循环中,continue语句只会结束当前单次循环,

画个示意图来说明下continue语句:

举个例子:

直接编写一个加continue语句的脚本continue1.sh

忘了再学Shell流程控制,特殊流程控制语句如何改写为长尾词?

来和上边的break语句中的两个脚本进行对比。

[root@localhost ~]# vim sh/continue1.sh #!/bin/bash # 输出10次变量i的值 # 循环十次 for((i=1;i<=10;i=i+1)) do # 如果变量i的值等于4 if[ "$i" -eq 4 ] then # 退出整个循环 continue fi # 输出变量i的值 echo $i done

执行该脚本查看结果:

[root@localhost sh]# chmod 755 continue1.sh [root@localhost sh]#./continue1.sh 1 2 3 5 6 7 8 9 10

从上面结果可以看出,continue语句是把第四个循环跳过去了,然后继续执行第5次循环。

这就是continue语句和break语句的区别。