您的位置:首页 > 运维架构 > Shell

shell脚本进阶篇(上)

2018-08-12 18:37 302 查看
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

• 用于将参量列表 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 脚本进阶