设为首页 收藏本站
查看: 1036|回复: 0

Shell脚本实现磁盘分区格式化

[复制链接]

尚未签到

发表于 2018-8-25 10:01:10 | 显示全部楼层 |阅读模式
  Shell脚本实现磁盘分区格式化
  我们的Shell脚本程序结构分为,顺序结构,选择结构以及循环结构,我们之前已经介绍过选择结构包括if、case语句,循环结构包括for循环、while循环以及until循环,今天我们就来介绍一下until循环,until循环的语法格式如下:
  until condition;do
  循环体
  done
  由以上可以看出,我们的until循环的语法格式和我们的while循环是一样的,唯一不同的是我们的while循环是在满足condition的情况下进入循环体进行循环,而我们的until是在满足condition的情况下终止循环,这和我们的while循环的机制刚好相反,until后面可以直接接上我们的Linux命令,表示的是将命令看做是是否跳出循环的条件,until判断的是命令的执行状态返回值,任何时候我们想要引用命令的执行状态返回值的时候,都可以直接将命令写在程序关键字的后面即可。
  练习:写一个脚本,要求
  使用until循环,来计算1到100的整数的和
  脚本内容:
DSC0000.png

  脚本执行结果:
DSC0001.png

  ·for循环的另一种格式(类似于我们C语言中的for循环)
  语法格式:
  for ((给循环控制变量一个初始值;再给它一个退出值;修正循环控制变量));do
  循环体
  done
  练习:写一个脚本,要求
  使用for循环的另一种格式来计算1-100中所有偶数的和
  脚本内容:
DSC0002.png

  脚本执行结果:
DSC0003.png

  ·ping命令
  ping命令的-c #选项可以指定ping的次数,默认一直ping下去
DSC0004.png

  ping命令的-W #(单位为秒钟)选项可以指定超时时长,当我们ping一台主机的时候,如果该主机不在线,那么它的响应时间会变得很长,此时我们就可以指定它的等待时长
DSC0005.png

  当我们ping通一台主机的时候,ping命令的执行状态返回值为0,反之则为1
DSC0006.png

  ·awk命令
  awk是一个报告生成工具,也是一个文本处理工具,它的优势在于,和cut命令不一样的,我们在使用awk命令切割字段的时候,可以忽略字段间分隔符的个数,awk和sed一样,在处理文本的时候,都是一次读取文本的一行内容,然后将该行内容在内部按照用户所指定的分隔符进行切割,不过用户指定的分隔符必须是输入分隔符,意思是指定的分隔符必须是该行内容中原有的分隔符,我们就是按照这样的分隔符进行字段切割的,awk命令默认的输出分隔符都是空格,切割完字段之后,awk会给每一个被切割出来的字段一个标识符,第一个字段为$1,第二个字段为$2,...依次类推,之后再去处理下一行内容。
  awk命令使用的基本语法格式:
  awk -F(输入分隔符)->指定输入分隔符 'Pattern{Action}' filename
  Pattern是模式匹配的模式,表示只处理符合匹配条件的行,如果条件符合了,那么就Action就表示在符合条件的那些行上做出处理动作,要想显示多个不同字段的话,直接在多个不同字段对应的标识符之间加上逗号即可,最简单的Action(处理动作)是print(打印)
DSC0007.png

DSC0008.png

  温故:[abcd...]:中括号表示文件名通配中的,实现匹配指定范围内的单个字符
DSC0009.png

  2>表示的是IO重定向中的重定向错误输出
DSC00010.png

  &>表示的是IO重定向中的重定向所有输出(包括正确的和错误的)
DSC00011.png

  练习:写一个脚本,为指定的磁盘创建分区并格式化
  要求
  1,列出当前系统上的所有磁盘,让用户选择,并且支持q退出脚本,如果用户选择错误,则让用户重新选择;
  2,当用户选择后,提醒用户接下来的操作可能会损坏数据,并请用户确认操作,如果用户选择y则开始分区格式化,如果用户选择n就退出脚本,否则就让用户重新选择;
  3,抹除指定磁盘上的所有分区,并为其创建三个主分区,第一个分区为20M,第二个分区为512M,第三个分区为128M,且第三个分区为swap类型
  脚本内容:
DSC00012.png

DSC00013.png

DSC00014.png

  脚本执行结果:
DSC00015.png

  ·总结上述脚本:
  ->抹除所有分区的命令是dd if=/dev/zero of=/dev/sd# bs=512 count=1,覆盖掉了一个磁盘上最前面的512个字节的数据,而这部分的数据正是我们的MBR,MBR损坏之后,就相当于是抹除了所有分区
  ->sync命令表示将内存上的操作同步到磁盘上去,因为我们上面抹除MBR的命令执行速度过快,为了防止系统来不及将内存中的改动同步到我们的硬盘中,我们得手动同步一次,并且用sleep 3命令使得脚本等待3秒,让我们的系统能够识别我们的命令
  -> read命令是在等待我们的用户输入内容之后才继续向下执行的
  ->我们使用脚本来进行磁盘分区的时候,可以直接使用echo命令,将我们要执行的操作传递给fdisk /dev/sd#命令即可
  温故:1,fuser -km 命令,是用来将所有正在使用挂载点的进程全部踢掉的命令
  2,我们的grep命令,默认是将匹配到的那一行内容全部输出至显示器
  而grep -o选项则是只将匹配到的字符串输出至显示器


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556258-1-1.html 上篇帖子: shell脚本之99乘法表 下篇帖子: 遍历文件夹并批量tar压缩的Shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表