我在Centos 6.8中写了一个2行bash脚本文件
#! /bin/sh
pid= ps -ef | grep -i 'adminserver' | grep -v grep | awk '{print $2}'
kill -9 $pid
当我运行脚本时,我得到以下输出:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
答案1
pid=
后面加一个空格会将pid
变量设置为空字符串。该行的其余部分将简单地执行管道并输出结果(可能输出到终端,除非它被重定向)。既然$pid
是空的,kill
后来就抱怨了。
要捕获命令的输出,请使用$(...)
,例如
pid=$( ps -ef | ... )
但是,最好用于pkill
您尝试执行的操作:
pkill adminserver
请参阅pkill
手册。
KILL
如果可能的话,我也会避免使用该信号。参见例如“我什么时候不应该杀死-9进程?”。