这几天频繁更新在线的程序,着实让我头疼。上午抽了些时间重新写了用于程序更新的脚本,脚本的功能并不复杂,但要让其更完善的工作,还需要花一点心思。
所谓让脚本完善一点是指填加几个函数,在执行关键性命令时做出提示,在执行完后做一个简单的判断,并将结果打印出来,如果命令执行出错,脚本应及时退出。
以下的几个定制的函数能让我们的脚本更像样儿。
#!/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
这样就会产生系统启动过程中,启动各种服务时的效果了。
还有一点就是要记得写脚本的用法,因为也许几个星期后,你也会忘记自己所写脚本的用法。
所谓让脚本完善一点是指填加几个函数,在执行关键性命令时做出提示,在执行完后做一个简单的判断,并将结果打印出来,如果命令执行出错,脚本应及时退出。
以下的几个定制的函数能让我们的脚本更像样儿。
#!/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
这样就会产生系统启动过程中,启动各种服务时的效果了。
还有一点就是要记得写脚本的用法,因为也许几个星期后,你也会忘记自己所写脚本的用法。