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中分区表抹除磁盘分区