练习:写一个脚本,(使用函数)
	1、提示用户输入一个磁盘设备的设备文件,如果设备文件不存在,就提示用户重新输入,直到用户输入正确为止;
		当用户给出正确的块设备后:
		1、显示用户输入块设备,并提示用户,后续的操作会损坏设备上的所有文件,让用户选择是否继续
		2、如果用户输入y,则继续后面的操作;
			1、如果用户选择了y, 则抹除指定块设备上的所有分区;
				1、在上面的磁盘创建两个主分区:
					(1) 50M
					(2) 512M
				2、均格式化为ext4文件系统;
				3、分别挂载至/mnt/boot和/mnt/sysroot
					1、在此设备上安装grub;
					2、在/mnt/sysroot目录下创建根文件系统所需要各目录;
						1、移植多个应用程序,至少包含bash、ifconfig等;
		3、如果用户输入n,则显示用户选择了中止,并退出脚本;
		4、输入任何其它字符,则让用户重新选择;
	2、用户可以输入quit退出;


#!/bin/bash
#########################################################################
# File Name: 007.sh
# Author: LookBack
# Email: taoxiaoyuzy@vip.qq.com
# Licence: GNU General Public Licence
# Created Time: Wed 23 Jul 2014 04:11:57 AM CST
#########################################################################

mntboot="/mnt/boot"
mntsysroot="/mnt/sysroot"
Program="bash ifconfig ls df ping"

checkInput() {
	clear
	until [ -n "$(fdisk -l $DiskName)" -a -z "$(echo ${DiskName} | grep -o '[0-9]')" ]; do
		read -p "Plz Enter A Device File Name : " DiskName
	done
}

printDisk() {
	clear
	fdisk -l $DiskName
	cat << EOF
=============================================================================================
====                                                                                     ====
==== Subsequent actions will damage all the files on the device, ask whether to continue ====
==== If you continue, please enter: y|Y|Yes|YES|yes|yES|yEs|YeS|yeS                      ====
==== If you do not want to enter the: n|N|No|NO|no|nO                                    ====
====                                                                                     ====
=============================================================================================
EOF
	read -p "Plz input : " XDisk
	clear
}


umountDisk() {
	[ -n "$(mount | grep -oE "$1")" ] && umount $1 &> /dev/null
}

makePartition() {
	for i in 1 2; do umountDisk ${DiskName}$i;done
	dd if=/dev/zero of=$DiskName bs=512 count=1 &> /dev/null
	fdisk $DiskName &> /dev/null << EOF
n
p
1

+50M
n
p
2

+512M
w
EOF
}

mke2fsPartition() {
	mke2fs -t $1 $2 &> /dev/null
}

mountPartition() {
	[ ! -d "$mntboot" ] && mkdir -p $mntboot
	[ ! -d "$mntsysroot" ] && mkdir -p $mntsysroot
	mount $1 $2
}

installGrub() {
	grub-install --root-directory=/mnt $DiskName &> /dev/null
	cp /boot/vmlinuz-$(uname -r) $mntboot/
	#cp /boot/initramfs-$(uname -r).img $mntboot/
	dracut $mntboot/initramfs-$(uname -r).img  $(uname -r)
	cat > $mntboot/grub/grub.conf << EOF
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#password --md5 \$1\$6Gi8p1\$U1hyuGTVQnsvz5gG9w9pf/
title CentOS $(uname -r) -This is a TEST OS-
	root (hd0,0)
	kernel /vmlinuz-$(uname -r) ro root=/dev/sda2 selinux=0 init=/bin/bash
	initrd /initramfs-$(uname -r).img
EOF
	chmod 600 $mntboot/grub/grub.conf
}

makeFHSdir() {
	mkdir -p $mntsysroot/{bin,dev,etc,home,lib/modules,lib64,opt,proc,root,sbin,selinux,sys,usr/{bin,sbin,lib,lib64},mnt,media,tmp,var/lib}
}

transplantProgram() {
	for i in $Program; do
		[ ! -d ${mntsysroot}$(dirname $(which --skip-alias $i)) ] && mkdir -p ${mntsysroot}$(dirname $(which --skip-alias $i))
		[ ! -f ${mntsysroot}$(which --skip-alias $i) ] && cp $(which --skip-alias $i) ${mntsysroot}$(dirname $(which --skip-alias $i))/
		for j in $(ldd $(which --skip-alias $i) | grep -oE '/[^[:space:]]+'); do
			[ ! -d ${mntsysroot}$(dirname $j) ] && mkdir -p ${mntsysroot}$(dirname $j)
			[ ! -f ${mntsysroot}$j ] && cp $II ${mntsysroot}$j
		done
	done
}

nextScript() {
	printDisk
	case $XDisk in
	y|Y|[yY][eE][sS])
		makePartition
		for i in 1 2;do mke2fsPartition ext4 ${DiskName}$i;done
		mountPartition ${DiskName}1 $mntboot
		mountPartition ${DiskName}2 $mntsysroot
		installGrub
		makeFHSdir
		transplantProgram
		seq 3 | xargs -i sync
		clear
		;;
	n|N|[nN][oO])
		clear
		exit 0
		;;
	*)
		nextScript
	esac
}

main() {
	clear
	read -p "Plz Enter A Device File Name : " DiskName
	case $DiskName in
	q|Q|[qQ][uU][iI][tT])
		clear
		exit 0
		;;
	*)
		checkInput
		nextScript
	esac
}

main