shell 指令碼練習4

來源:互聯網
上載者:User

標籤:shell linux

練習:寫一個指令碼,(使用函數)1、提示使用者輸入一個磁碟裝置的裝置檔案,如果裝置檔案不存在,就提示使用者重新輸入,直到使用者輸入正確為止;當使用者給出正確的塊裝置後:1、顯示使用者輸入塊裝置,並提示使用者,後續的操作會損壞裝置上的所有檔案,讓使用者選擇是否繼續2、如果使用者輸入y,則繼續後面的操作;1、如果使用者選擇了y, 則抹除指定塊裝置上的所有分區;1、在上面的磁碟建立兩個主要磁碟分割:(1) 50M(2) 512M2、均格式化為ext4檔案系統;3、分別掛載至/mnt/boot和/mnt/sysroot1、在此裝置上安裝grub;2、在/mnt/sysroot目錄下建立根檔案系統所需要各目錄;1、移植多個應用程式,至少包含bash、ifconfig等;3、如果使用者輸入n,則顯示使用者選擇了中止,並退出指令碼;4、輸入任何其它字元,則讓使用者重新選擇;2、使用者可以輸入quit退出;


#!/bin/bash########################################################################## File Name: 007.sh# Author: LookBack# Email: [email protected]# 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() {clearuntil [ -n "$(fdisk -l $DiskName)" -a -n "echo $(fdisk -l $DiskName) | grep -o ‘[0-9]‘" ]; doread -p "Plz Enter A Device File Name : " DiskNamedone}printDisk() {clearfdisk -l $DiskNameecho "============================================================================================="echo "====                                                                                     ===="echo "==== Subsequent actions will damage all the files on the device, ask whether to continue ===="echo "==== If you continue, please enter: y|Y|Yes|YES|yes|yES|yEs|YeS|yeS                      ===="echo "==== If you do not want to enter the: n|N|No|NO|no|nO                                    ===="echo "====                                                                                     ===="echo "============================================================================================="echo ""read XDisk}makePartition() {dd if=/dev/zero of=$DiskName bs=512 count=1fdisk $DiskName << EOFnp1+50Mnp2+512MwEOF}mke2fsPartition() {mke2fs -t ext4 ${DiskName}{1,2}}mountPartition() {[ ! -d "$mntboot" ] && mkdir -p "$mntboot" && mount ${DiskName}1 $mntboot[ ! -d "$mntsysroot" ] && mkdir -p $mntsysroot && mount ${DiskName}2 $mntsysroot}installGrub() {grub-install --root-directory=/mnt $DiskName}makeFHSdir() {mkdir {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 echo $Program; do[ ! -d ${mntsysroot}$(dirname $I) ] && mkdir -p ${mntsysroot}$(dirname $I)[ ! -f ${mntsysroot}$(which --skip-alias $I) ] && cp $(which --skip-alias $I) ${mntsysroot}$(dirname $I)for II in $(ldd $(which --skip-alias $I) | grep -oE ‘/[^[:space:]]+‘); do[ ! -d ${mntsysroot}$(dirname $II) ] && mkdir -p ${mntsysroot}$(dirname $II)[ ! -f ${mntsysroot}$II ] && cp $II ${mntsysroot}/donedone}nextScript() {printDiskcase $XDisk iny|Y|Yes|YES|yes|yES|yEs|YeS|yeS)makePartitionmke2fsPartitionmountPartitioninstallGrubmakeFHSdirn|N|No|NO|no|nO)clearexit 0 ;;*)nextScriptesac}read -p "Plz Enter A Device File Name : " DiskNamecase $DiskName inq|Q|quit|QUIT)clearexit 0;;*)checkInputnextScriptesac


shell 指令碼練習4

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.