- 论坛徽章:
- 1
|
本帖最后由 夏织风 于 2017-05-26 18:06 编辑
今天遇到一个坑:
在脚本中调用server_function文件中的conf_del方法去删除配置文件
脚本代码(部分)如下:
#-------------------------------------------------
# Remove ALL GIS-Server
#-------------------------------------------------
[[ -e /tmp/gmond.log ]] && sudo -s /bin/bash -c "rm -rf /tmp/gmond.log" root
[[ -e /tmp/appserver.log ]] && rm -rf /tmp/appserver.log
[[ -e /tmp/sdeserver_master.log ]] && rm -rf /tmp/sdeserver_master.log
[[ -e /tmp/sdeserver_slave.log ]] && rm -rf /tmp/sdeserver_slave.log
conf_check CResult CPath $Service_Username
[[ $CResult -eq 1 ]] && conf_del $CPath
rm -rf $TOPDIR
然后在删除脚本所在的目录
其中,server_function文件中的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!"
}
之后,主脚本中的删除目录步骤就可以往下继续执行了。
PS:至于为什么会出现这个原因,我不是很清楚,希望知道的大咖们能和我交流一下!万分感谢!
|
|