Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5783345
  • 博文数量: 291
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7924
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 14:28
个人简介

阿里巴巴是个快乐的青年

文章分类

全部博文(291)

文章存档

2018年(21)

2017年(4)

2016年(5)

2015年(17)

2014年(68)

2013年(174)

2012年(2)

分类: LINUX

2013-09-28 21:34:33

        如果你要编写大型的Shell脚本程序,那么模块化必须的,定义函数来模块化脚本程序是个不错的选择。
        要定义一个Shell函数,只需要简单地写出它的名字,然后是一对空括号,再把有关的语句放在一对花括号中,其语法形式如下:
        function_name () {
            statements
        }
        需要注意的是:Shell中不存在前向声明,函数定义必须在所有调用之前。
        当一个函数被调用时,脚本程序的位置参数$*、$@、$#、$1、$2等会被替换为函数的参数,这也是你读取传递给函数的参数的办法,当函数执行完毕后,这些参数会恢复为它们先前的值。
        下面举个例子(脚本名:my_name)演示函数的参数是如何传递的,以及函数如何返回一个true或false值,脚本程序在调用时需要有一个参数,该参数时你想要在问题中使用的名字:
        #!/bin/sh
        #在Shell头之后,定义函数yes_or_no
        yes_or_no() {
            echo "Is your name $* ?"
            while true
            do
                echo -n "Enter yes or no: "
                read x
                case "$x" in
                    y | yes )     return 0;;
                    n | no )      return 1;;
                    * )             echo "Answer yes or no"
                esac
            done
        }
        #主程序部分
        echo "Original parameters are $*"
        if yes_or_no "$1"
        then 
            echo "Hi $1, nice name"
        else
            echo "Never mind"
        fi
        exit 0
        这个脚本程序的典型输出如下所示:
        $./my_name Rick Neil
        Original parameters are Rick Neil
        Is your name Rick ?
        Enter yes_or_no: yes
        Hi Rick, nice name
        脚本程序开始执行时,函数yes_or_no被定义,但先不会执行。在if语句中,脚本程序执行到函数yes_or_no时,先把$1替换为脚本程序的第一个参数Rick,再把它作为参数传递给这个函数。函数将使用这些参数,它们现在被保存在$1、$2等位置参数中,并向调用者返回一个值。if结构再根据这个返回值去执行相应的语句。
        
        
阅读(4287) | 评论(1) | 转发(2) |
2

上一篇:Shell之控制结构

下一篇:敏捷开发之Scrum

给主人留下些什么吧!~~

scq2099yt2013-09-28 21:34:55

文明上网,理性发言...