Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134574
  • 博文数量: 73
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 760
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-29 14:07
文章分类
文章存档

2011年(2)

2010年(4)

2009年(40)

2008年(27)

我的朋友

分类:

2008-12-24 09:56:37

 

 
  这几天频繁更新在线的程序,着实让我头疼。上午抽了些时间重新写了用于程序更新的脚本,脚本的功能并不复杂,但要让其更完善的工作,还需要花一点心思。

  所谓让脚本完善一点是指填加几个函数,在执行关键性命令时做出提示,在执行完后做一个简单的判断,并将结果打印出来,如果命令执行出错,脚本应及时退出。

  以下的几个定制的函数能让我们的脚本更像样儿。
  
#!/bin/sh

. /etc/init.d/functions

#测试前一条命令执行情况
function test_result(){
        if [ "$1" -eq 0 ]; then
                echo_success
        else
                echo_failure
                echo
                exit 0
        fi
        echo
}
function yesno(){
        echo -n "继续:[y/N]"
        read GETIT
        if [ "$GETIT" == n -o "$GETIT" == N ]; then
                echo "程序已退出"
                exit 1
        else
                :
        fi
}

function useage(){
        echo "$0 PROJECTNAME HOST1 HOST2 ..."
        exit 1
}


  在执行关键性命令时,先打印出命令行或命令的功能,然后运行yesno提示是否执行该命令,如:

        echo $COMMAND
        yesno
        eval $COMMAND

  这里的COMMAND变量已存储了命令行;运行完命令后记得测试运行结果:

        echo $COMMAND
        yesno
        eval $COMMAND
        RETVAL=$?
        echo -n "执行同步..."
        test_result $RETVAL

  我们会得到这样的结果:

执行同步...                                                [  确定  ]

  如果你不打算将命令行的输出打印到标准输出的话,可以这样写脚本:

        echo $COMMAND
        yesno
        echo -n "执行同步..."
        eval $COMMAND >/dev/null 2>&1
        RETVAL=$?
        test_result $RETVAL

    这样就会产生系统启动过程中,启动各种服务时的效果了。

  还有一点就是要记得写脚本的用法,因为也许几个星期后,你也会忘记自己所写脚本的用法。
阅读(502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~