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

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的整数的和

脚本内容:

脚本执行结果:

·for循环的另一种格式(类似于我们C语言中的for循环)

语法格式:

for ((给循环控制变量一个初始值;再给它一个退出值;修正循环控制变量));do

循环体

done

练习:写一个脚本,要求

使用for循环的另一种格式来计算1-100中所有偶数的和

脚本内容:

脚本执行结果:

·ping命令

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

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

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

·awk命令

awk是一个报告生成工具,也是一个文本处理工具,它的优势在于,和cut命令不一样的,我们在使用awk命令切割字段的时候,可以忽略字段间分隔符的个数,awk和sed一样,在处理文本的时候,都是一次读取文本的一行内容,然后将该行内容在内部按照用户所指定的分隔符进行切割,不过用户指定的分隔符必须是输入分隔符,意思是指定的分隔符必须是该行内容中原有的分隔符,我们就是按照这样的分隔符进行字段切割的,awk命令默认的输出分隔符都是空格,切割完字段之后,awk会给每一个被切割出来的字段一个标识符,第一个字段为$1,第二个字段为$2,...依次类推,之后再去处理下一行内容。

awk命令使用的基本语法格式:

awk -F(输入分隔符)->指定输入分隔符 ‘Pattern{Action}‘ filename

Pattern是模式匹配的模式,表示只处理符合匹配条件的行,如果条件符合了,那么就Action就表示在符合条件的那些行上做出处理动作,要想显示多个不同字段的话,直接在多个不同字段对应的标识符之间加上逗号即可,最简单的Action(处理动作)是print(打印)

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

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

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

练习:写一个脚本,为指定的磁盘创建分区并格式化

要求

1,列出当前系统上的所有磁盘,让用户选择,并且支持q退出脚本,如果用户选择错误,则让用户重新选择;

2,当用户选择后,提醒用户接下来的操作可能会损坏数据,并请用户确认操作,如果用户选择y则开始分区格式化,如果用户选择n就退出脚本,否则就让用户重新选择;

3,抹除指定磁盘上的所有分区,并为其创建三个主分区,第一个分区为20M,第二个分区为512M,第三个分区为128M,且第三个分区为swap类型

脚本内容:

脚本执行结果:

·总结上述脚本:

->抹除所有分区的命令是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选项则是只将匹配到的字符串输出至显示器

时间: 2024-10-22 22:18:17

Shell脚本实现磁盘分区格式化的相关文章

马哥教育视频学习笔记-shell脚本完成磁盘分区格式化

马哥教育视频学习笔记-shell脚本完成磁盘分区格式化-http://edu.51cto.com/lesson/id-28201.html 以下是脚本内容,内容比较简单,不做详解 在Linux上准备一块空闲的磁盘即可,如何分区可以在脚本内改下 #!/bin/bash # echo "Initial a disk..." echo -e "\033[31mWarning: \033[0m " #开始的说明信息,其中Warning以红色字体显示 fdisk -l 2&g

Linux01-脚本编程之八until循环及脚本完成磁盘分区格式化37

一.脚本编程控制结构 1.顺序 2.选择 if case 3.循环 a)for b)while CONDITION:do statment ... done 进入循环:条件满足 退出循环:条件不满足 c)until 二.until循环 1.格式: until CONDITION; do statement ... done 2.表示: 进入循环:条件不满足 退出循环:条件满足 如:写脚本,每5s检查一次hadoop是否登录系统: #!/bin/bash # who | grep "hadoop&

利用shell脚本远程磁盘分区

在学习linux有关知识,前段时间学习了shell脚本,写了一个非常简单的脚本,远程其他虚拟机进行磁盘分区,自己纯手打的,也算是记录个人学习的一些过程吧,大神可以略过!下面是脚本内容,可以直接运行的!系统是CentOS7.4的版本 #!/bin/bash#利用expect远程分区expect << EOFspawn ssh 172.25.0.11expect "password" {send "redhat\n"}expect "#"

10-5 脚本编程之八 脚本完成磁盘分区格式化

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区 1.列出当前系统上所有磁盘,让用户选择,如果选择quit则退出脚本,如果用户选择错误,让用户重新选择 2.当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认,如果用户选择y就继续,n就退出.否则就让用户重新选择 3.删除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区):并为其创建3个主分区    且第三个是swap分区类型.(分区命令通过echo传送

第10课--10_05_脚本编程之八 脚本完成磁盘分区格式化

一.until 循环where CONDTION;dostatementdone进入循环,条件满足退出循环,条件不满足until CONDTION;dostatementdone进入循环,条件不满足退出循环,条件满足for i in list ;dostatementdonefor ((expr1;epxr2,expr3));dolistdonefor((i=1;i<100;i++));dolistdone二.18 原文地址:http://blog.51cto.com/13788421/2316

Linux中如何实现磁盘分区格式化?

本文和大家分享的主要是linux 中磁盘分区格式化相关内容,一起来看看吧,希望对大家 学习linux有所帮助. 磁盘分区 分区格式的两种选择:MBR 和 GPT 分区命令: parted的操作都是实时生效的,小心使用,主要是用于大于2T硬盘,支持MBR和GPT两种格式. 用法:parted [ 选项 ]- [ 设备 [ 命令 [ 参数 parted /dev/sdb mklabelgpt|msdos  //选择分区格式 parted /dev/sdb print  //查看分区 parted /

linux磁盘分区格式化、挂载,文件系统

一.硬盘分区&格式化&挂载 RHEL5强制刷新分区表 partprobe /dev/sdb RHEL6强制刷新分区表 partx -a /dev/sdb 1.创建文件系统:挂载分区&格式化 mkfs.TAB 查看当前系统可创建分区类型 [[email protected] ~]# mkfs. mkfs.cramfs  mkfs.ext3    mkfs.vfat    mkfs.ext2    mkfs.msdos 格式化第一个分区   mkfs.ext3 /dev/sdb1 创建

利用脚本进行磁盘分区

脚本进行磁盘分区的原理是利用echo传输数据给fdisk进行操作的: 1 #!/bin/bash #输出字符要求输入一个磁盘地址 7 echo -n "Please enter a need to partition the disk address:" #利用read获取到地址,存储在dz变量中 8 read  dz #提示进行操作将会销毁此次操作的磁盘上的所有数据,如果继续请按y 10 echo -e "\033[31mIn the next operation will

(转)centos7.4 fdisk磁盘分区 格式化 挂载

centos7.4 fdisk磁盘分区 格式化 挂载 原文:http://blog.csdn.net/capecape/article/details/78499351 1.查看系统中有多少可以识别的硬盘.U盘 [root@localhost ~]# fdisk -l 1 2.使用fdisk命令进行分区 [root@localhost ~]# fdisk /dev/sdb 1  记得输入w保存退出! 3.通知操作系统,分区表已经改变 [root@localhost ~]# partprobe 1