马哥教育视频学习笔记-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> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]"
#显示所有磁盘设备
read -p "Your choice(Disk or quit):" PARTDISK
if [ $PARTDISK == 'quit' ]; then
  echo "quit"
  exit 7
fi
for I in `mount | grep "$PARTDISK" | awk '{print $1}'`;do
  fuser -km  $I
  umount $I
  echo "$I umount ok."
done        
            
until fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]" | grep "Disk $PARTDISK$" &> /dev/null;do
  read -p "Wrong option,Your choice again:" PARTDISK
done       
read -p "Will destroy all data, continue(y or n):" CHOICE
      
until [ $CHOICE == 'y' -o $CHOICE == 'n' ]; do
  read -p "Will destroy all data, continue(y or n):" CHOICE
done
if [ $CHOICE == 'n' ]; then
  echo "Quit"
  exit 9
else
dd if=/dev/zero of=$PARTDISK bs=512 count=1 &> /dev/null
sync
sleep 3 
echo 'n
p 
1

+2G
n
p
2

+3G
n
p
3

+1G
w' | fdisk $PARTDISK &> /dev/null
partprobe $PARTDISK
sync
sleep 2
mkfs.ext4 ${PARTDISK}1 &> /dev/null
mkfs.ext4 ${PARTDISK}2 &> /dev/null
mkswap ${PARTDISK}3 &> /dev/null
fi
fdisk -l $PARTDISK
#查看分区结果