这是我第一次在ChinaUnix上发布博客,以后有机会希望能大家多分享交流一下!
转到正题:
今天遇到一个坑:
在脚本中调用server_function文件中的conf_del方法去删除配置文件
然后在删除脚本所在的目录
其中,conf_del方法:
function conf_del {
cnt_EV=`grep "export EVSERVER_RUNTIME" $1 | wc -l`
cnt_QT=`grep "export QT_PLUGIN_PATH" $1 | wc -l`
cnt_Flum=`grep "export FLUME_HOME" $1 | wc -l`
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
}
说白了就是删除.bashrc文件中的一些信息
因为我今天是测试别的功能,所以.bashrc文件中的相应的删除信息没有
所以,在执行到:
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
这个地方的时候杯具了
脚本只返回:
[[ 0 -eq 1]]
[[ 0 -eq 1]]
[[ 0 -eq 1]]
然后不再执行删除脚本所在目录的操作
经过检查测试后发现,应该是Linux管道的问题
由于[[ 0 -eq 1]]导致无法退出conf_del方法
解决方法是:在conf_del方法里面追加一句
function conf_del {
cnt_EV=`grep "export EVSERVER_RUNTIME" $1 | wc -l`
cnt_QT=`grep "export QT_PLUGIN_PATH" $1 | wc -l`
cnt_Flum=`grep "export FLUME_HOME" $1 | wc -l`
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
echo "all informations have been deleted!"
}
之后,主脚本中的删除目录步骤就可以往下继续执行了。
备注:至于为什么会出现这个情况,我也不是很明白。希望各位知道原因的大咖能和我交流一下。万分感谢!
阅读(5896) | 评论(1) | 转发(0) |