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

相关内容