#!/bin/bash
#########################
# 功能:脚本实现磁盘分区格式化及挂载
#
# 手动输入要分区的磁盘
# 如果已经存在分区,先删除
# 格式化磁盘
#########################
echo "磁盘分区格式化及挂载"
echo -e "\033[31mWARNING:\033[0m" #提醒用户危险操作
partition_format_mount(){
fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]" #显示所有分区
read -p '选择要分区的磁盘:' disk
partdisk=$disk
if [[ $partdisk == "quit" ]];then
echo "quit"
exit 7 #错误退出,非0
fi
echo -e "\033[31mWARNING:**************\033[0m" #提醒用户危险操作
read -p "确定对$partdisk进行分区?(y/n)" choice
################
until [ "$choice" == 'y' -o "$choice" == 'n' ];do
read choice
done
lsblk | grep sd[a-z]
if [ $choice = n ];then
exit 0
else
#============= 删除磁盘分区 =============
#删除所有分区
echo "删除$partdisk的所有分区:"
sleep 1
echo 'd #32-45行echo的内容,和命令行中操作步骤一样
w'|fdisk $partdisk &>/dev/null #返回消息送入/dev/null 设备
echo "删除$partdisk的所有分区完成"
fi
################
echo -e "\033[31mWARNING:**************\033[0m" #提醒用户危险操作
#格式化磁盘
read -p "开始对 $partdisk 进行分区(y/n):" choice
until [ "$choice" == 'y' -o "$choice" == 'n' ];do
read choice
done
if [ $choice = n ];then
exit 0
else
#============= 磁盘分区 =============
#磁盘分区,全部分给一个区
echo "开始给 $partdisk 分区:" ###
sleep 1
echo 'n
p
1
w'|fdisk $partdisk &>/dev/null #
echo "$partdisk 分区完成"
#判断分区是否已经完成
formatdisk=$partdisk'1'
echo "formatdisk: $formatdisk"
echo "fdisk -l | grep $formatdisk"
if [ $? -eq 0 ] ;then
#============= 磁盘格式化 =============
echo "开始格式化 $partdisk 磁盘"
echo "mkfs.ext4 $formatdisk"
mkfs.ext4 $formatdisk
#格式化磁盘完成
echo "格式化磁盘完成"
sleep 1 #同步内容花费时间较长,休眠3s否则下面格式化命令无法执行
if [ ! -d "/data/" ];then
mkdir /data
echo "/data文件夹不存在,创建/data文件夹"
fi
mount $formatdisk /data
echo "挂载磁盘$formatdisk到/data目录下"
echo "$formatdisk /data ext4 defaults 0 0">> /etc/fstab
else
echo -e "\033[33m WARNING:$partdisk分区出现问题,需要重新分区。。。 \033[0m"
fi
fi
# test partion
echo '>>> result: '
lsblk | grep sd[a-z]
}
echo -e "\033[31mWARNING:磁盘分区格式化及挂载!\033[0m" #提醒用户危险操作磁盘分区格式化及创建软连接脚本
partition_format_mount
echo 'Finished!'