关于shell脚本中grep返回错误信息

云斜月 2014-06-04 12:53:26
  top -n 3 |grep java|grep irm |awk '{print $1,$9}' >restorecpufile
jvmpid=`awk 'NR==1{print}' restorecpufile | awk '{print $1}'`
jvmcpu=`awk 'NR==1{print}' restorecpufile | awk '{print $2}'`
if [ ${jvmcpu:-999} != "999" ] && [ `echo "${jvmcpu} >= ${LIMIT}" |bc` -eq 1 ];then

echo "ooooooooo$jvmpid"
if [ ${jvmpid:-999} != "999" ];then
echo '$jvmpid' = $jvmpid
#ps -ef >~/jvmcpu/1111111
# cat ~/jvmcpu/1111111 |fgrep $jvmpid >2222222
ps -ef|grep $jvmpid > jvmcpulog.out #执行这句,会报错,提示grep: 不匹配的 [ 或 [^
# kill -3 $jvmpid
if ((count++ == 10));then
filename=`date +%s`
# tar -zcf ${filename}.tar ~/jvmcpu/jvmcpulog.out
echo "xiaoxi"
count=0
echo " ">~/jvmcpu/jvmcpulog.out
fi


fi
#else
# echo "OG "

fi


如题, 这个原因是为什么。应该怎么解决
...全文
525 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
云斜月 2014-06-05
  • 打赏
  • 举报
回复
引用 9 楼 ljc007 的回复:
引用
这个应该获得不了需要的内容吧,
何以见得?
我在机器上跑过了,木有得到内容
ljc007 2014-06-05
  • 打赏
  • 举报
回复
引用
这个应该获得不了需要的内容吧,
何以见得?
云斜月 2014-06-05
  • 打赏
  • 举报
回复
引用 11 楼 ljc007 的回复:
/java.*irm/ 改成 /irm.*java/
恩,可以, awk 不怎么会用,我看看帮助
ljc007 2014-06-05
  • 打赏
  • 举报
回复
/java.*irm/ 改成 /irm.*java/
Carl_CCC 2014-06-04
  • 打赏
  • 举报
回复
报什么错误 是不是$jvmpid 的值是空的。
云斜月 2014-06-04
  • 打赏
  • 举报
回复
引用 7 楼 ljc007 的回复:
建议减少管道的使用,比如:
top -n 3 | awk '/java.*irm/{print $1,$9}' >restorecpufile
jvmpid=`awk 'NR==1{print $1}' restorecpufile`
jvmcpu=`awk 'NR==1{print $2}' restorecpufile`
top -n 3 | awk '/java.*irm/{print $1,$9}' >restorecpufile
这个应该获得不了需要的内容吧,
ljc007 2014-06-04
  • 打赏
  • 举报
回复
建议减少管道的使用,比如:
top -n 3 | awk '/java.*irm/{print $1,$9}' >restorecpufile
jvmpid=`awk 'NR==1{print $1}' restorecpufile`
jvmcpu=`awk 'NR==1{print $2}' restorecpufile`
云斜月 2014-06-04
  • 打赏
  • 举报
回复
引用 3 楼 Idle_Cloud 的回复:
echo "ooooooooo$jvmpid" 你这句打印出来是什么啊。
原因找到了 ,$jvmpid 包含一些特殊信息, 打印不出来。所以。。。
云斜月 2014-06-04
  • 打赏
  • 举报
回复
云斜月 2014-06-04
  • 打赏
  • 举报
回复
引用 3 楼 Idle_Cloud 的回复:
echo "ooooooooo$jvmpid" 你这句打印出来是什么啊。
这个就是为了调试时显示信息的, 输出 ooooooooo24450 我在想,是不是$jvmpid 返回的这个值的格式有问题, 是不是和格式有关系,
Carl_CCC 2014-06-04
  • 打赏
  • 举报
回复
echo "ooooooooo$jvmpid" 你这句打印出来是什么啊。
云斜月 2014-06-04
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
报什么错误 是不是$jvmpid 的值是空的。
报这个错误 提示grep: 不匹配的 [ 或 [^ $jvmpid 不是空, 我是判断非空,才会执行的。

18,771

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧