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


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

    一、顺序结构的定义

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

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

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

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

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

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

    $0

    当前脚本的文件名

    $n

    传递给脚本或函数的参数。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分支语句的格式如下

    case $变量名 in          # 严格掌握其语法 
     模式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命令,当在程序执行过程中遇到这个命令,就会忽略本次循环中剩余的命令,将控制权交给循环的顶部

  • 相关阅读:
    区间筛——模板
    I NEED A OFFER!
    dp入门(A)
    java如何创建类
    二维数组
    一维数组
    循环练习记录
    根据浏览器屏幕分辨率不同使用不同的css样式——响应式
    jquery 淡入淡出动画效果例子
    toggle()在新闻热点上的运用
  • 原文地址:https://www.cnblogs.com/time-to-despair/p/9974222.html
Copyright © 2020-2023  润新知