2016-9-22 困扰两天之用脚本分区

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb0),为指定硬盘创建分区
①列出当前系统上所有的硬盘,让用户选择,

    如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择
②当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;

    如果用户选择y就继续,n就退出,否则,让用户重新选择
③抹除那块硬盘上的所有分区,(提示:抹除所有分区后执行sync命令,并让脚本睡眠3s后再分区);

并为其创建三个主分区,第一个为20M,第二个512M,第三位128M(Swap类型),

最后三个分别格式化为ext3,ext3,swap

(提示1:将分区命令通过echo传送给fdisk即可实现,睡眠3s: sleep 3)
(提示2:抹除所有分区dd if=/dev/zero of=/dev/sdb bs=512 count=1)

以下是标准脚本,参照着标准脚本来,还是不行. T_T

【#!/bin/bash
#

#初始化分区

echo "Initial a disk..." 
echo -e "\033[31mWaring...\033[0m"
#列出当前系统上所有的硬盘,让用户选择read -p "Choice a disk:" DISK

fdisk -l 2> /dev/null | grep -o "^Disk /dev/sd[a-z]"

#如果选择quit则退出脚本

if [ $DISK == ‘quit‘ ]; then
    echo "Quitting.."
    exit 5
fi

#如果用户选择错误,就让用户重新选择

#第三个管道 最后在变量DISK后多加一个$是什么意思,第三个管道的意思其实都不太理解

#这一层的意思是,除非你输入的是/dev/sdb之类的,不然就提醒你选择错误,重新选择一个分区

until fdisk -l 2> /dev/null | grep -o "Disk /dev/sd[a-z]" | grep "^Disk $DISK$" &> /dev/null; do
    read -p "Waring option,choice again...:" DISK
done
#当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认

read -p "Will destory all data,continue(y/n):" CHOICE
#如果用户不是选择y/n,就让用户重新选择

until [ $CHOICE == ‘y‘ -o $CHOICE == ‘n‘ ]; do
    read -p "Will destory all data ,continue(y/n):" CHOICE
done

#如果用户选择y就继续,n就非法退出,

if [ $CHOICE == ‘n‘ ]; then
    echo "Quitting..."
    exit4
else

#抹除那块硬盘上的所有分区,然后执行sync命令,并让脚本睡眠3s后再分区)

dd if=/dev/zero of=$DISK bs=512 count=1
sync
sleep 3

#分区过程通过管道送到fdisk 下

echo ‘n
p
1

+20M
n
p
2

+512M
n
p

+128M
t
3
82
w‘ | fdisk $DISK &> /dev/null

#重新读取分区,防止脚本执行过快,先睡眠3s再格式化

partprobe $DISK
sync
sleep 2

#最后三个分别格式化为ext3,ext3,swap

mke2fs -j ${DISK}1 &> /dev/null
mke2fs -j ${DISK}2 &> /dev/null
mkswap ${DISK}3 &> /dev/null
fi

如下是正确执行结果,分区和格式化的信息不需要输出到屏幕上

最后创建分区并格式化完成,即可挂载使用


然而这段脚本在我的本本上是错误的,结果是这样 T_T,肿么办???

求大神某天路过我的博客可以提出宝贵意见!!!!!!

时间: 2024-12-20 13:21:50

2016-9-22 困扰两天之用脚本分区的相关文章

2016.8.22 Axure两级下拉框联动的实现

刚学Axure,有些很简单的东西都要弄很久,但是弄出来的总归是很开心的. 参考来自:实现省市县下拉框的三级联动 http://www.woshipm.com/rp/348795.html/comment-page-1 我的实现: 1.添加两个droplist,并且为之命名:province和city. 2.为province添加两个选项. 3.将city转换为dynamic panel. 右击city,选择选项“convert to dynamic panel”. 4.为city添加两个状态(与

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

“耐撕”团队 2016.3.22 站立会议

时间:2016.03.22 ① :18:00--18:25   ②18:40--19:00   总计45分钟. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:http://www.cnblogs.com/charliePU/), Q 齐嘉亮(博客:http://www.cnblogs.com/dendroaspis-polylepis/), L  刘伟硕(博客:http://www.cnblogs.com/We

Linux系统实现虚拟内存有两种方法:交换分区(swap分区)和交换文件

Linux系统实现虚拟内存有两种方法:交换分区(swap分区)和交换文件 交换文件 查看内存:free -m , -m是显示单位为MB,-g单位GB 创建一个文件:touch /root/swapfile 使用dd命令,来创建大小为2G的文件swapfile: dd if=/dev/zero of=/root/swapfile bs=1M count=2048 //命令执行完需要等待一段时间 if表示input_file输入文件 of表示output_file输出文件 bs表示block_siz

2016.10.19 小米前端面试 vs 2016.10.22 华为web面试

这次面试还是很值得记录一下的~长了很多姿势. 一共三面,面试官都是MIUI的浏览器部门,感觉面试官都很厉害,知识点问的很细很深入. 一面面试官是个可爱的小姑娘,主要考察的就是常见的前端面试题,很基础,但是会在其上进行拓展和深入.就我记得的一些题做个总结: 1. 说一下CSS的盒模型?(这简直是我参加过的几乎所有前端面试岗必问的一道题目--不管是比较水的国企还是问基础的互联网... 想一想似乎只有只问项目不谈基础的京东没有问吧) 这里是答案 2. 常用的跨域方法:(之前小米一个面试官电话面试时候也

2016.7.22.noip2012D2

mod: 扩展欧几里德算法,而我没有复习,暴力的60 事后后悔死 classroom: 线段树得90,T两个点.代码与问题如下: 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 int n,m,s,t; 6 long long r[1000005],d; 7 struct stu 8 { 9 int l,r; 10 long long mi,val; 1

2016 - 1 - 22 HTTP(一)

一:通过URL找到服务器   1. URL的概念: 1.1 URL全称Uniform Resource Locatior 统一资源定位符 1.2 通过一个URL就可以找到互联网上的唯一的资源. 1.3 一个URL对应唯一的互联网资源. 2. URL的基本格式:   协议:// 主机地址/ 路径 如 :http://www.baidu.com/img/logo.png          http://202.108.22.5/img/logo.png 2.1 协议: 不同的协议,代表着不同的资源查

2016/2/22 三级导航

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

一个运维小白的成长日记(M20-1 2016.7.22)

screen命令: 打开新的screen:         screen -S [SESSION] 加入会话:                screen -x [SESSION] 退出并关闭screen:          exit 剥离当前screen:            Ctrl+a,d 显示所有已经打开的screen:       screen ls 恢复某screen:             screen -r [SESSION] 重点: (1)当使用系统时只有一个screen请