case条件语句
如果$x等于”值1”则执行命令1…以此类推
1 | case $x in |
使用场景:系统服务的启动脚本或菜单脚本一般使用case语句
case语句
1 | 脚本: |
- rsync服务简单启动服务脚本
1 | [root@linux-node1 ~]# cat rsync #判断配置文件与命令文件是否存在,否则就退出 |
for循环语句
语法:
1 | for 变量 in 变量取值列表 |
1 | for i in `ls` ;do echo $i;done |
- 使用for循环,批量创建10个文件,要求:文件名包含10个随机字符并以_oldboy.html结尾
1 | [root@oldboyedu scripts]# cat 19-1.sh |
- 批量修改上一个练习中的文件名,要求: 修改oldboy为oldgirl并修改.html为.HTML
1 | #!/bin/bash |
- 批量创建10个oldboy为前缀的用户并为用户创建随机密码
1 | #!/bin/bash |
- 做一个监控内网主机存活的脚本(串行脚本,耗费时间较长)
1 | [root@linux-node1 ~]# cat alive.sh |
1 | 后台运行程序 |
- 要求:筛选不大于6个数的单词
1 | #!/bin/bash |
- 破解RANDOM随机数
1 | 通过man bash 搜索“RANDOM”可以看到RANDOM结果的范围,即0-32767 |
1 | 执行结果: |
- 输出乘法口诀
1 | for a in `seq 9` |
while循环语句
1 | 条件一旦成立则永远进行死循环 |
1 | 语法: |
- 水果菜单-while循环-修改版
1 | [root@linux-node1 ~]# cat menu.sh |
1 | 执行效果: |
1 | sleep 1 //1秒 |
1 | vim /etc/while1.sh |
- shell脚本限制DDos攻击
1 | 1.防止服务器被DDoS攻击的Shell脚本 |
- 使用while循环从文件一行一行读入
1 | #!/bin/bash |
30个shell生产环境面试题
1 | http://blog.51cto.com/oldboy/1867160s |
exit n
1 | while true |
break n
1 | 作用:一旦条件满足,则跳出循环(注:if是判断不是循环),但会继续执行循环之外的内容 |
continue n
1 | 作用:一旦条件满足,则结束当前本次循环,继续下一次循环 |
reture n
1 | 作用:只在函数中起作用,用来判断函数执行是否正确。和exit一样。 |
shell数组
注:数组是保存到内存中的,由于性能差劲,了解即可
1 | arry=(1 2 3) 定义数组,将1、2、3同时赋值给变量array |
获取数组长度
1 | [root@linux-node1 ~]# echo ${#arry[0]} |
数组赋值
1 | [root@linux-node1 ~]# arry[3]=4 |
遍历数组
1 | [root@linux-node1 ~]# for i in ${arry[@]};do echo $i;done |
shell函数
1 | 作用:把脚本里面多次调用相同的代码定义成一份,起个名字,需要的时候直接调用即可。 |
1 | [root@linux-node1 ~]# cat fun.sh |
1 | source下函数脚本之后,函数名称(sendmail)可以通过Tab键补全 |
1 | [root@linux-node1 ~]# cat fun.sh |
- 函数传参
1 | [root@oldboyedu scripts]# cat func.sh |
将函数体与脚本分离
1 | #!/bin/bash |
了解
1 | basename /server/scripts/fun.sh #取出脚本名(去除脚本目录) |
实现shell文件锁
1 | 不让脚本在执行的过程中重复执行的问题,可以使用shell文件锁解决。 |
1 | #!/bin/bash |
脚本调试
1 | (1) sh -x "脚本名称" |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/12/09/shell高级编程-进阶3/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!