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
举例
循环
循环执行
将某代码段重复运行多次
重复运行多少次:
循环次数事先已知
循环次数事先未知
有进入条件和退出条件
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 脚本进阶篇下一周后更新)
条件选择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 脚本进阶篇下一周后更新)
相关文章推荐
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- [shell应用进阶]:限制同时运行脚本实例的个数 -- 串行化:换一个思路。
- 用shc加密shell脚本 - linux进阶屋 - 51CTO技术博客
- 详解shell脚本(四)—— 基础进阶
- shell脚本基础进阶(二)----变量及运算符
- shell——记录个人脚本的一个进阶
- shell脚本基础进阶(三)----流程控制语句
- Shell 实践、常用脚本进阶
- shell脚本基础进阶(一)----shell介绍
- SHELL脚本编程进阶(一)
- shell脚本进阶 详解及其实例(一)
- Linux 基础命令(十)—— SHELL脚本编程进阶(一)
- Shell脚本进阶(下)
- SHELL脚本编程进阶(二)
- shell脚本高级进阶小总结
- MongoDB 的shell脚本基础进阶
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- 详解shell脚本(十二)—— 进阶功能实现
- shell脚本语言编程进阶实战
- Shell 脚本进阶2