歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> 在Shell腳本中運用函數

在Shell腳本中運用函數

日期:2017/3/1 10:13:03   编辑:SHELL編程

函數,相信我們每個人都有多了解,其實就像數學中的函數一樣,遵循某種規則,把語句、語法有效的結合起來,去實現某種特定功能的模塊。

函數的命名 funct_name () { 函數體} 或者 function func_name { 函數體 }

函數本身是不能執行的,只有通過主函數的調用,才可以產生作用

練習腳本

1、創建一個函數,可以接受一個磁盤設備路徑(如/dev/sdb)作為參數;在真正開始後面步驟之前提醒用戶有危險,並讓用戶選擇是否繼續;而後將此磁盤設備上的所有分區清空(提示,使用命令dd if=/dev/zero of=/dev/sdb bs=512 count=1實現,注意其中的設備路徑不要寫錯了);如果此步驟失敗,返回67給主程序;接著在此磁盤設備上創建兩個主分區,一個大小為100M,一個大小為1G;如果此步驟失敗,返回68給主程序;格式化此兩分區,文件系統類型為ext3;如果此步驟失敗,返回69給主程序;如果上述過程都正常,返回0給主程序;

2、調用此函數;並通過接收函數執行的返回值來判斷其執行情況,並將信息顯示出來;

理解題意:1 創建一個函數命名為dkpro ,實現對特定設備的特定操作。符合條件à清空磁盤à創建分區à格式化分區

2 調用dkpro函數,並根據函數的返回狀態來顯示特定的信息,例如成功或失敗對應信息

個人腳本如下:

#!/bin/bash
#
dkpro() {
echo " the action have danger,are you go on yes or no "
read -p "input a answer:" ANSWER
case $ANSWER in
yes)
dd if=/dev/zero of=$1 bs=512 count=1
[ $? -eq 0 ] || return 67
echo "
n
p
1

+100M
n
p
2

+1G
w" | fdisk $1
[ $? -eq 0 ] || return 68
mke2fs -j $1
[ $? -eq 0 ] || return 69

;;
no)
exit
;;
esac
}
read -p "input disk: " DISK
dkpro $DISK
[ $? -eq 0 ] && echo "successfully" || echo "failed"

這樣一個小腳本,執行過程中也還是遇到了問題,首先,磁盤分區的時候 命令需要echo 而後再通過管道;而後執行後又出現了錯誤,最後才意識到虛擬機只有一塊磁盤設備,忘了添加第二塊。

Copyright © Linux教程網 All Rights Reserved