在Shell脚本中运用函数

2014-11-24 11:01:44 来源: 作者: 浏览: 0

函数,相信我们每个人都有多了解,其实就像数学中的函数一样,遵循某种规则,把语句、语法有效的结合起来,去实现某种特定功能的模块。


函数的命名 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 而后再通过管道;而后执行后又出现了错误,最后才意识到虚拟机只有一块磁盘设备,忘了添加第二块。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: