shell-转义 - shell转义问题
本文介绍了shell-转义 - shell转义问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
process="ps -ef|grep /home/abc|awk {print $2}
" ---这里将取出进程id的语句定义成变量
下面杀掉这个进程:
kill -9 $process
但是执行的时候报:
kill: /home/abc|grep: arguments must be process or job IDs
kill: /home/abc|grep|awk: arguments must be process or job IDs
应该是转义问题,我用process
这样貌似不行
这个process我就想定义成一个公共变量,因为这个脚本很多机器用,而且grep条件可能都不一样,所以我不想直接从这得出进程id,我只想定义成一个语句,下面要用的地方就写成kill -9 $process
这样
那个单引号不能显示,请看截图,谢谢!
解决方案
直接把双引号里内容直接输出了,并未执行。shell需要表达式执行需用``包围
process=`ps -ef|grep '/home/abc'|grep -v grep|awk '{print $2}'`
另外可以考虑这个
ps -ef|grep '/home/abc'|grep -v grep|awk '{print $2}'|xargs -n1 kill -9
题主说作为变量哪里需要就哪里调用
process="ps -ef|grep /home/abc|grep -v grep|awk '{print \$2}'"
--需要执行可以用$($process),不过试了下不行,ERROR: Unsupported SysV option.
考虑是否可以用eval(方法来自google,测试可行)
kill -9 `eval $process`
这篇关于shell-转义 - shell转义问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文