首页 > 代码库 > 2016-9-22 困扰两天之用脚本分区
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,肿么办???
求大神某天路过我的博客可以提出宝贵意见!!!!!!
本文出自 “11160930” 博客,请务必保留此出处http://11170930.blog.51cto.com/11160930/1855459
2016-9-22 困扰两天之用脚本分区