Liunx-----Shell脚本流程控制--顺序、选择、循环

.shell 程序流程控制结构三大结构
1)顺序结构
2)选择结构
3)循环结构shell

1、顺序结构的定义 编程

顺序结构的程序设计是最简单的一种结构,它的执行顺序是自上而下,依次执行。bash

顺序结果的编写流程以及注意事项

1.顺序结构程序编写流程
1)编辑脚本文件,以#!/bin/sh 开头;编程语言

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,咱们能够用各类各样的解释器来写对应的脚本。函数

2)编写业务程序,顺序编写语句块一、语句块二、语句块3 。oop

2.掌握常见的系统变量的含义:
这些系统变量一般用与命令行参数的获取。spa

$0命令行

当前脚本的文件名设计

$ncode

传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$#

传递给脚本或函数的参数个数。

$*

传递给脚本或函数的全部参数。

$@

传递给脚本或函数的全部参数。被双引号(" ")包含时,与 $* 稍有不一样,下面将会讲到。

$?

上个命令的退出状态,或函数的返回值。

$$

当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$0

当前脚本的文件名

注意:有时候须要获取到参数的个数,以及全部参数的内容。

变量名

说明

变量名

说明

HOME

当前用户主目录

PWD

用户的当前目录

PATH

命令搜索路径

UID

当前用户标识符

LOGNAME

用户登陆名

TERM

终端的类型

PS1

第一命令提示符,是#或$

SHELL

用户的shell类型以及路径

PS2

第二命令提示符,默认是>

HISFILE

存储历史命令的文件

 

交互式输入与输出程序编写

1.交互式输入与输出

read 命令读取标准输入设备的一行,到新行换行符前的字符做为终止,把读到的字符赋值给变量。
能够结合echo 一块儿实现读取并输出的功能。

2.顺序结构交互式输入与输出程序演练

 给出输入提示的read用法

read -p “提示信息:” myaddr

 

选择结构

选择结构的定义

1.选择结构的定义
选择结构是程序中带有判断的一种逻辑结构,只有符合必定的条件,程序体才会被执行

2.Linux shell 选择结构分类
1)if-then控制结构
2)case–esac控制结构

if

if 语句语法格式:

if [     ]
then
    command1 
    command2
    ...
    commandN 
fi

if else

if else 语法格式:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi
 
 

if else-if else

 
 

if else-if else 语法格式:

 
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

输出结果:

a 小于 b

if else语句常常与test命令结合使用,以下所示:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

输出结果:

两个数字相等!

for 循环

与其余编程语言相似,Shell支持for循环。

for循环通常格式为:

for i in $(seq 1 10)
 do
   echo $i
done
for io in A B C D E F H K O
  do
    echo $io
 done
for ((m=1; $m<=12; m++ ))
do
    echo $m
done

case esac控制结构

case语句适用于须要进行多重分支的应用状况,它也是选择结构中经常使用的一种控制结构。

case分支语句的格式以下

casein# 严格掌握其语法 $变量名        
1# 右括号不能省(”可比较相等”) 模式)               
1命令序列
# 两分号不能省;;                     
2模式)
2命令序列
;;
  *)
  默认执行的命令序列
  ;;
esac#结尾反写case表示结束。                                 

 

#!/bin/bash

read -p "请输入数字(1-7):" a
case $a in
1)
     echo "今天是星期一"
;;
2)
     echo "今天是星期二"
;;
3)
     echo "今天是星期三"
;;
4)
     echo "今天是星期四"
;;
5)
     echo "今天是星期五"
;;
6)
     echo "今天是星期六"
;;
7)
     echo "今天是星期日,休息日!"
;;
*)
     echo "请按规范输入指定数字"
;;
esac

输出结果

[root@localhost ~]# ./stt.sh
请输入数字(1-7):4
今天是星期四
[root@localhost ~]# ./stt.sh
请输入数字(1-7):8
请按规范输入指定数字
[root@localhost ~]# ./stt.sh
请输入数字(1-7):1
今天是星期一
[root@localhost ~]# ./stt.sh
请输入数字(1-7):3
今天是星期三

 

While循环结构

rt=1
while [ $rt -le 10 ]
do
    echo "the script is running..."
    let rt++
    sleep 3
done
i=1
while ((i<=10))
 do
     echo $i
    let "i++"
done

while read 循环使用

1.while read 变量   能够按行读入
一直到全部行都读完,才退出循环,在实际工做中,会常常采用这种循环结构,进行数据的处理。

语法格式:
cat file.txt |while read line
# line能够换个名字,此处的cat也能够是一个产生若干行的命令,如 find
do
….
done

须要注意的是while read line循环体中的变量退出当前循环后,会被销毁,因此若要二次使用循环体中的变量,则须要采用其余办法。

由于管道后的while loop是sub shell ,因此里面的变量在执行完成后,须要销毁。

cat aa.txt | while read isop
 do
    echo $isop
 done

continue 、break 使用

1.循环中有两种类型的控制break和continue
这是一种无条件的流程控制,强制程序跳出当前的循环,或跳出当前循环继续执行下一个循环。

break命令,会退出当前的循环而且将控制权传递到本循环后面的第一个命令

continue命令,当在程序执行过程当中遇到这个命令,就会忽略本次循环中剩余的命令,将控制权交给循环的顶部

相关文章
相关标签/搜索