shell流程控制
# if条件
# 基础知识
单分支if
# 单条件,单结果 if [ 条件 ] then 指令1 fi
1
2
3
4
5双分支if
# 单条件,两结果 if [ 条件 ] then 指令1 else 指令2 fi
1
2
3
4
5
6
7多分支if
# n条件,n+1结果 if [ 条件 ] then 指令1 elif [ 条件2 ] then 指令2 else 指令3 fi
1
2
3
4
5
6
7
8
9
10
# 简单实践
单分支if示例
#!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] then echo "您的性别是男" fi
1
2
3
4
5
6双分支if示例
#!/bin/bash # 双if语句的使用场景 if [ "$1" == "nan" ] then echo "您的性别是男" else echo "您的性别是女" fi
1
2
3
4
5
6
7
8多分支if示例
#!/bin/bash # 多if语句的使用场景 if [ "$1" == "nan" ] then echo "您的性别是男" elif [ "$1" == "nv" ] then echo "您的性别是女" else echo "您的性别,我不知道" fi
1
2
3
4
5
6
7
8
9
10
11
# 综合实践
要求脚本执行需要有参数,通过传入参数来实现不同的功能。
参数和功能详情如下︰
参数 执行效果 start 服务启动中... stop 服务关闭中... restart 服务重启中... * 脚本 X.sh 使用方式 X.sh [ start or stop or restart ] 脚本内容
#!/bin/bash # 多if语句的使用场景 if [ "$1" == "start" ] then echo "服务启动中..." elif [ "$1" == "stop" ] then echo "服务关闭中..." elif [ "$1" == "restart" ] then echo"服务重启中..." else echo "$0脚本的使用方式:$0 [ start | stop | restart ]" fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# case条件
# 基础知识
基本格式
case 变量名 in 值1) 指令1 ;; ... 值n) 指令n ;; esac
1
2
3
4
5
6
7
8
9注意
- 首行关键字是
case
- 末行关键字
esac
- 选择项后面都有
)
- 每个选择的执行语句结尾都有两个分号
;
- 首行关键字是
# 简单实践
要求脚本执行需要有参数,通过传入参数来实现不同的功能。
参数和功能详情如下︰
参数 执行效果 start 服务启动中... stop 服务关闭中... restart 服务重启中... * 脚本 X.sh 使用方式 X.sh [ start or stop or restart ] 脚本内容
# cat case.sh #!/ bin/bash # case语句使用场景 case "$1" in "start") echo "服务启动中..." ;; "stop") echo "服务关闭中..." ;; "restart") echo "服务重启中..." ;; *) echo "$0脚本的使用方式:$0 [ start or stop or restart ]" ;; esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 循环控制
# for循环
语法格式
for 条件 do 执行语句 done
1
2
3
4特点
- for语句,循环的数量由列表中元素个数来决定
示例
#!/bin/bash # for语句的使用示例 for i in $(ls /root) do echo "${i}" done
1
2
3
4
5
6
# while循环
语法格式
while 条件 do 执行语句 done
1
2
3
4特点
- while语句,只有条件不满足的时候,才会终止循环
示例
#!/bin/ bash # while语句的使用示例 a=1 while [ $a -lt 10 ] do echo "${a}" let a=a+1 done
1
2
3
4
5
6
7
8
9
# until循环
语法格式
until 条件 do 执行语句 done
1
2
3
4特点
- until语句,只有条件满足的时候,才会终止循环
示例
#!/bin/bash # unti1语句的使用示例 a=1 until [ $a -eq 10 ] do echo "${a}" let a=a+1 done
1
2
3
4
5
6
7
8
9
# 循环退出
我们在进行循环控制的时候,有时候,需要根据实际情况,终止循环或者跳过当前循环,这就用到了循环退出的基本功能。
# 基本语法
- break
- 条件满足的时候,终止执行后面的所有循环
- continue
- 条件满足的时候,跳过当前的循环,进入到下一个循环
# 简单实践
break实践
#!/bin/bash #while语句的使用示例 a=1 while [ $a -lt 10 ] do if [ $a == 5 ] then echo "终止后续所有循环" break fi echo "${a}" let a=a+1 done
1
2
3
4
5
6
7
8
9
10
11
12
13
14break效果
1 2 3 4 终止后续所有循环
1
2
3
4
5continue实践
#!/bin/bash # while语句的使用示例 a=1 while [ $a -lt 10 ] do let a=a+1 if [ $a == 5 ] then echo "跳过当前循环,执行下一循环" continue fi echo "{a}" done
1
2
3
4
5
6
7
8
9
10
11
12
13
14continue效果
2 3 4 跳过当前循环,执行下一循环 6 7 8 9 10
1
2
3
4
5
6
7
8
9
# 函数基础
函数就是将某些命令组合起来实现某一特殊功能的方式,是脚本编写中非常重要的一部分。
# 简单函数格式
定义函数
function 函数名(){ 函数体 }
1
2
3调用函数
函数名
1实践
#!/bin/bash #简单函数演示 # 定义函数 dayin(){ echo "wode mignzi shi zhangsan" } #简单函数调用 dayin
1
2
3
4
5
6
7
8
9
10
注意:function关键字可以省略。
# 传参函数格式
定义格式∶
函数名(){ 函数体 $n }
1
2
3调用函数︰
函数名 参数
1实践
#!/bin/bash #函数传参演示 #定义传参数函数 dayin(){ echo "wode mignzi shi $1" } #函数传参调用 dayin 张三
1
2
3
4
5
6
7
8
9
10
# 状态返回值
定义格式
函数名(){ 函数体 $n return 1 }
1
2
3
4实践
#!/bin/bash #函数传参演示 #定义传参数函数 dayin({ echo "wode mignzi shi $1" return 3 } #函数传参 dayin 张三 echo "函数执行的状态返回值: $?"
1
2
3
4
5
6
7
8
9
10
11
12
# 函数进阶
# 脚本传参函数调用
脚本传参数
/bin/bash 脚本名 参数
1函数体调用参数︰
函数名(){ 函数体 $1 } 函数名 $1
1
2
3
4实践
#!/bin/bash #函数传参演示 #定义传参数函数 dayin(){ echo "wode mignzi shi $1" } #函数传参 dayin $1
1
2
3
4
5
6
7
8
9
# 脚本传参函数调用(加强版)
脚本传参数
/bin/bash 脚本名 参数
1函数体调用参数︰
本地变量名="$1" 函数名(){ 函数体 $1 } 函数名 "${本地变量名}"
1
2
3
4
5实践
#!/bin/bash #函数的使用场景二 canshu="$1" dayin(){ echo "wo de mingzi shi $1" } dayin "${canshu}"
1
2
3
4
5
6
7
注意:类似于shell内置变量中的位置参数
Last Updated: 2024/03/29, 17:39:25