Shell 编程(实例二)

创建一个脚本,为指定硬盘创建分区

1、列出当前系统所有磁盘,让用户选择,如果选择quit则退出脚本;如果选择错误,则重新选择

2、当用户选择完成后,询问是否继续

3、抹除选择磁盘上的分区,为其创建三个分区,每个分区100M

#!/bin/bash

#获得当前主机识别磁盘
fdisk -l | grep "^Disk /dev/sd[ab]" | cut -d':' -f1
read -p "please chioce the disk you want to partation :"  PARTDISK

#如果输入quit则退出脚本
if [ $PARTDISK == 'quit' ]
then
        exit 0
fi

#判断用户输入磁盘是否存在
until  fdisk -l | grep "^Disk /dev/sd[ab]" | cut -d':' -f1 | grep "^Disk $PARTDISK$" &> /dev/null 
do
        read -p "error , input again:" PARTDISK
done

#是否确认执行
read -p "are you affirm to partation : (y/n)" CHOICE
until [ $CHOICE == 'y' -o $CHOICE == 'n' ]
do
        read -p "are you affirm to partation : (y/n)" CHOICE
done

if [ $CHOICE == 'n' ]
then
        exit 0
else
        #抹除磁盘上所有分区
        dd if=/dev/zero of=$PARTDISK bs=512 count=1 &> /dev/null
        #同步到磁盘
        sync
        #等待磁盘同步完成
        sleep 3
#创建分区
        echo 'n
p
1

+100M
n
p
2

+100M
n
p
3

+100M
w' | fdisk $PARTDISK
        sync
        sleep 3

partprobe $PARTDISK
mke2fs -j ${PARTDISK}1
mke2fs -j ${PARTDISK}2
mke2fs -j ${PARTDISK}3
fi        

总结:

  1、循环条件体中如果是要获得命令执行是否成功,则可以直接输入命令

  2、使用交互式命令在脚本中可以通过 echo ... | 命令 的方式执行

  3、dd if=/dev/zero of=/dev/磁盘  通过改写MBR中分区表抹除磁盘分区

猜你喜欢

转载自www.cnblogs.com/xiaoliwang/p/9023171.html