shell脚本:流程控制

    技术2024-01-15  91

    流程控制

    在shell的语句中,流程控制主要分为两种:

    简单流程控制语句:选择和循环

    单分支if语句

    语法格式: if [ 条件 ] then 指令 fi 场景:单一条件,只有一个输出 示例: 1 #!/bin/bash 2 # 单if语句的使用场景 3 4 # 定义一个本地变量,用于接收脚本执行时候的参数 5 a="$1" 6 7 if [ "${a}" == "nan" ] 8 then 9 echo "您的性别是男" 10 fi python@ubuntu:/media/python/a/script$ bash if.sh nan 您的性别是男

    双分支if语句:

    语法格式:if [ 条件 ] then 指令一 else 指令二 fi 场景:一个条件,两种结果 示例: 1 #!/bin/bash 2 3 # 这是if双分支语句 4 # a是本地变量,用来接收参数 5 a="$1" 6 7 if [ "${a}" == "nan" ] 8 then 9 echo "男" 10 else 11 echo "其他" 12 fi python@ubuntu:/media/python/a/script$ bash doubleif.sh nan 男 python@ubuntu:/media/python/a/script$ bash doubleif.sh n 其他

    多分枝if语句

    语法格式:

    if [ 条件 ] then 指令一 elif [ 条件二 ] then 指令二 else 指令三 fi

    场景:n个条件,n+1个结果 示例:

    1 #!/bin/bash 2 3 # 这是if多分支语句 4 # a是本地变量,用来接收参数 5 a="$1" 6 7 if [ "${a}" == "nan" ] 8 then 9 echo "男" 10 elif [ "${a}" == "nv" ] 11 then 12 echo "女" 13 else 14 echo "其他" 15 fi python@ubuntu:/media/python/a/script$ bash manyif.sh nan 男 python@ubuntu:/media/python/a/script$ bash manyif.sh nv 女 python@ubuntu:/media/python/a/script$ bash manyif.sh 123 其他

    多if语句生产场景:服务的启动 需求:要求脚本执行需要有参数,通过传入参数来实现不同的功能 参数和功能:

    参数执行结果start服务启动中stop服务关闭中restart服务重启中*脚本X.sh 使用方式 X.sh [ start|stop|restart ]

    内容:

    #!/bin/bash # a是本地变量,用来接收参数 a="$1" if [ "${a}" == "start" ] then echo "服务启动中..." elif [ "${a}" == "stop" ] then echo "服务关闭中..." elif [ "${a}" == "restart" ] then echo "服务重启中..." else echo "脚本 $0 的使用方法: $0 [ start|stop|restart ]" fi

    执行结果:

    python@ubuntu:/media/python/a/script$ bash server.sh start 服务启动中... python@ubuntu:/media/python/a/script$ bash server.sh stop 服务关闭中... python@ubuntu:/media/python/a/script$ bash server.sh restart 服务重启中... python@ubuntu:/media/python/a/script$ bash server.sh 脚本 server.sh 的使用方法: server.sh [ start|stop|restart ]

    case选择语句 如果使用大量的if语句,代码量很多很多乱,使用case可以更好的维护

    格式case 变量名 in 值1) 指令1 ;; 值2) 指令2 ;; 值3) 指令3 ;; esac 注意: ​ 首行关键字是case,末行关键字是esac ​ 选择项后面都有 ) ​ 每个选择的执行语句结尾都有两个分号 示例: 1 #!/bin/bash 2 3 # case语句替换多if语句 4 # a 是本地变量,用来接收参数 5 6 a="$1" 7 8 case "${a}" in 9 start) 10 echo "服务开启..." 11 ;; 12 stop) 13 echo "服务关闭..." 14 ;; 15 restart) 16 echo "服务重启..." 17 ;; 18 *) 19 echo "脚本 $0 的使用方式: $0 [ start|stop|restart ]" 20 esac 结果:python@ubuntu:/media/python/a/script$ bash case.sh start 服务开启... python@ubuntu:/media/python/a/script$ bash case.sh stop 服务关闭... python@ubuntu:/media/python/a/script$ bash case.sh restart 服务重启... python@ubuntu:/media/python/a/script$ bash case.sh 脚本 case.sh 的使用方式: case.sh [ start|stop|restart ]

    for循环

    语法格式: for i in 列表 do 执行语句 done

    示例:

    1 #!/bin/bash 2 3 # for循环语句 4 for i in $(ls /media/python/a/script) 5 do 6 echo "/media/python/a/script 目录下有文件:${i}" 7 done

    结果:

    python@ubuntu:/media/python/a/script$ bash for.sh /media/python/a/script 目录下有文件:1.txt /media/python/a/script 目录下有文件:awk.txt /media/python/a/script 目录下有文件:case.sh /media/python/a/script 目录下有文件:ceshi-all /media/python/a/script 目录下有文件:ceshi-ok /media/python/a/script 目录下有文件:cuowu /media/python/a/script 目录下有文件:doubleif.sh /media/python/a/script 目录下有文件:for.sh /media/python/a/script 目录下有文件:get_arg.sh /media/python/a/script 目录下有文件:get_name1.sh /media/python/a/script 目录下有文件:get_num.sh /media/python/a/script 目录下有文件:grep.txt /media/python/a/script 目录下有文件:guandao.txt /media/python/a/script 目录下有文件:if.sh /media/python/a/script 目录下有文件:manyif.sh /media/python/a/script 目录下有文件:nihao.txt /media/python/a/script 目录下有文件:sed.txt /media/python/a/script 目录下有文件:server.sh /media/python/a/script 目录下有文件:split.sh /media/python/a/script 目录下有文件:sudo /media/python/a/script 目录下有文件:test /media/python/a/script 目录下有文件:test1.sh /media/python/a/script 目录下有文件:test2.sh /media/python/a/script 目录下有文件:test3.sh /media/python/a/script 目录下有文件:test4.sh /media/python/a/script 目录下有文件:test-error /media/python/a/script 目录下有文件:test-ok /media/python/a/script 目录下有文件:zhengque

    while循环

    语法格式while 条件 do 执行语句 done 注意: 条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 )) 场景:只要条件满足就一直往下执行 示例:1 #!/bin/bash 2 3 # while循环语句 4 5 # a 是初始化变量 6 a=1 7 8 while [ "${a}" -lt 5 ] # -lt 小于 -eq 等于 -gt 大于 -ne 不等于 9 do 10 echo "${a}" 11 a=$((a+1)) # $((计算表达式)) let 计算表达式 12 done 结果:python@ubuntu:/media/python/a/script$ bash while.sh 1 2 3 4

    until循环

    语法格式until 条件 do 执行语句 done 注意: 条件的类型:命令、[[ 字符串表达式 ]]、(( 数字表达式 )) 场景:只要条件满足就一直往下执行 示例:1 #!/bin/bash 2 3 # until循环语句 4 5 # a 是初始化变量 6 a=1 7 8 until [ "${a}" -eq 5 ] # -lt 小于 -eq 等于 -gt 大于 -ne 不等于 9 do 10 echo "${a}" 11 a=$((a+1)) # $((计算表达式)) let 计算表达式 12 done 结果:python@ubuntu:/media/python/a/script$ bash until.sh 1 2 3 4
    Processed: 0.012, SQL: 9