自动化运维入门(四)shell流程控制(控制语句与函数)
2018-10-10 11:39
375 查看
#1 shell流程控制
##1.1 单分支if语句
- 场景:单一条件,只有一个输出
- 语法格式:
if [ 条件 ] then 指令 fi # fi作为结束语
示例:
#!/bin/bash if [ "weibo" == "中国人" ] then echo "中国人" fi
##1.2 双分支if语句
- 场景:一个条件,两种结果
- 语法格式
if [ 条件 ] then 指令1 else 指令2 fi
- 双分支if语句示例
#!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] then echo "您的性别是 男" else echo "您的性别是 女" fi
阻塞等待输入指令 read
参数-p:同于提示
如:read -p “请输入数字”
显示请输入
将输入保存到变量:
read 变量名
配合if使用
#!/bin/bash read -p "请输入名字:" user if [ "weibo" == "中国人" ] then echo "中国人" fi
1.3多分支语句if elif else fi
- 场景:n个条件,n+1个结果
- 语法格式
if [ 条件 ] then 指令1 elif [ 条件2] then 指令2 else 指令3 fi
- 示例:
多分支if语句示例 #!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] then echo "您的性别是 男" elif [ "$1" == "nv" ] then echo "您的性别是 女" else echo "您的性别,我不知道" fi
1.4 要求脚本执行需要有参数,通过传入参数来实现不同的功能
参数和功能详情如下
参数 | 执行效果
start | 服务器启动中…
stop | 服务器关闭中…
restart | 服务器重启中…
脚本 X.sh 使用方式 X.sh [ start|stop|restart ]
脚本内容
admin-1@ubuntu:/data/scripts/python-n# cat if.sh #!/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.5 case选择语句
我们发现多if语句使用的时候,代码量很多,而且整体看起来确实有那么一丁点乱,有没有办法更好的实现这种效果呢?就是Case语句
效果和if一样,也是多分支语句
- case语句格式
#!bin/bash case "$1" in "start") echo "启动" ;; "stop") echo "停止" ;; "restart") echo "重启" ;; *) echo "请输入start|stop|restart" ;; esac
1.6 for循环语句
循环指定的所有元素,循环完毕之后就退出
注意:”for” 循环总是接收 “in” 语句之后的某种类型的字列表,执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出
- 语法格式
for 值 in 列表 do 执行语句 done
- 示例:遍历文件
#!/bin/bash # for语句的使用示例 for i in $(ls /root) do echo "${i}" done
1.7 while循环
- 语法格式:
while 条件 do 执行语句 done
- while语句示例
#!/bin/bash count=1 while [ $count -lt 5 ] do echo "count:$count" $((count += 1)) done
1.8 until循环语句
- 语法格式
until 条件 do 执行语句 done
- 示例
#!/bin/bash count=1 until [ count -ge 5 ] do echo "count: $count" let count=count+1
#2 函数
#!/bin/bash dayin(){ echo "函数" }
注意:不能定义空函数,也即是说{}中必须有内容
2.1 函数的简单调用
#!/bin/bash dayin(){ echo "wo de mingzi shi 111" } dayin # 输出函数名以调用
2.2 函数传参和函数体内调用参数示例
#!/bin/bash dayin(){ echo "wo de mingzi shi $1" } # 调用函数传参 dayin 111 # 函数名后面的参数会作为参数传入函数内
2.3 在命令行中直接传参到函数中
#!/bin/bash dayin(){ echo "函数:$1, $2, $3" } dayin $1 $2 $3
终端中:
python@ubuntu:~/Desktop$ bash dayin a b c 函数:a, b, c
2.4 脚本传参,函数调用(生产用)
#!/bin/bash # 函数的使用场景二 canshu = "$1" dayin(){ echo "wo de mingzi shi $1" } # 调用函数传参 dayin "${canshu}"
2.5 限制传入参数的个数
#!/bin/bash dayin(){ if [ $# = 3] then echo "函数:$1, $2, $3" else echo "需要3个参数" fi } dayin $1 $2 $3
source 脚本文件后,就可以在终端中使用函数,不需要通过脚本使用
阅读更多相关文章推荐
- 自动化运维工具puppet二:puppet的变量和流程控制语句
- shell入门之流程控制语句 分类: 学习笔记 linux ubuntu 2015-07-10 16:38 89人阅读 评论(0) 收藏
- shell入门之流程控制语句
- shell入门之流程控制语句
- shell入门之流程控制语句
- MySQL入门-函数/游标/存储过程/流程控制语句
- Shell入门(四)之Shell 流程控制
- Java基础知识点之函数和流程控制语句小结
- 002-Scala函数定义、流程控制、异常处理入门实战
- OpenGL - 算数操作符、循环语句、流程控制及函数声明
- scala 基本语句-流程控制与函数定义、异常处理
- C#入门篇5-4:流程控制语句 while
- 黑马程序员 JAVA初级-编程基础2 流程控制语句 函数 数组
- Java入门 之 流程控制语句
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Shell学习笔记(8)-流程控制之IF语句
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
- 王家林亲传《DT大数据梦工厂》第二讲Scala函数定义、流程控制、异常处理入门
- shell 流程控制语句测试
- Java入门 第一季第四章 流程控制语句