shell脚本进阶篇(上)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本进阶篇(上)相关的知识,希望对你有一定的参考价值。
shell脚本是我们学习运维的难点,本篇内容简单举例shell脚本的进阶上篇,有任何技术上的指导,知识上的不足都欢迎指出点明。
流程控制
过程式编程语言: 顺序执行 选择执行 循环执行
条件选择if语句
? 单分支
if 判断条件;then 条件为真的分支代码 fi
双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi
多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假的分支代码 fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
举例:
编写脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
执行结果如下
举例2
编写脚本/root/bin/checkint.sh,判断用户输入的参数是否为正整数
执行结果如下
条件判断:case语句
case 变量引用 in
PAT1) 分支1 ;;
PAT2) 分支2 ;;
... *) 默认分支 ;;
esac case支持glob风格的通配符: *: 任意长度任意字符 ?: 任意单个字符 []:指定范围内的任意单个字符 a|b: a或b
举例
创建一个脚本名为useradd.sh, 当执行-a选项时,会批量创建用户mageuser1~mageuser20,要求mageuserX的uid为200x,mageuserxx的uid为20xx,1~8用户的shell为/sbin/nologin,9~20用户的uid为/bin/bash。最后这20个用户的密码都设置为centos 当执行-d选项时,批量删除用户mageuser1~mageuser20。连同家目录一同删除
循环
循环执行 将某代码段重复运行多次 重复运行多少次: 循环次数事先已知 循环次数事先未知 有进入条件和退出条件
for循环
for 变量名 in 列表;do
循环体
done
举例
举例
编写脚本打印矩形
执行结果如下:
while循环
? while CONDITION; do
循环体
done
? CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件 为“true”,则执行一次循环;直到条件测试状态为“false”终止循环
? 因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
? 进入条件:CONDITION为true
? 退出条件:CONDITION为false
举例
循环控制shift命令
? shift [n]
? 用于将参量列表 list 左移指定次数,缺省为左移一次。
? 参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环 遍历位置参量列表时,常用到 shift
? ./doit.sh a b c d e f g h
? ./shfit.sh a b c d e f g h
举例
执行结果如下
创建无限循环
? while true; do
循环体
? done
? until false; do
循环体
? Done
(shell 脚本进阶篇下一周后更新)
以上是关于shell脚本进阶篇(上)的主要内容,如果未能解决你的问题,请参考以下文章