Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16960
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 42
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-03 23:14
文章分类
文章存档

2017年(1)

我的朋友

分类: LINUX

2017-05-26 14:40:58

这是我第一次在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) |
0

上一篇:没有了

下一篇:没有了

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

王楠w_n2017-05-31 13:06:33

多谢分享,已将您的文章推荐博客首页