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`