Bash 如何通过awk终止进程?

Bash 如何通过awk终止进程?,bash,Bash,在我的makefile中,我有一个命令 kill `ps aux | awk '/process_name/' | awk '$11 ~ /special_mask/ {print $2}'` 它通过终端工作,但当我试图通过命令调用它时,它返回 kill `ps aux | awk '/process_name/' | awk '1 ~ /special_mask/ {print }'` 如果没有进程id,它不能执行kill。 我怎样才能修好它? 您可以使用: ps aux | awk '/

在我的makefile中,我有一个命令

kill `ps aux | awk '/process_name/' | awk '$11 ~ /special_mask/ {print $2}'`
它通过终端工作,但当我试图通过命令调用它时,它返回

kill `ps aux | awk '/process_name/' | awk '1 ~ /special_mask/ {print }'`
如果没有进程id,它不能执行
kill
。 我怎样才能修好它?

您可以使用:

ps aux | awk '/[p]rocess_name/ && $$11 ~ /special_mask/{print $$2}' | xargs -r kill

您可以使用:

ps aux | awk '/[p]rocess_name/ && $$11 ~ /special_mask/{print $$2}' | xargs -r kill

您可以使用:
ps aux | awk'/[p]process_name/&&&$11~/special_mask/{print$2}'| xargs kill
@anubhava它没有帮助。也许有一种方法可以检查select是否返回非空字符串?@Jens:在
xargs
中使用
-r
标志(
GNU
specific not in
POSIX
),这意味着只有当管道前面的命令生成输出字符串(stdout)时,
xargs
之后的命令才会运行(
kill
)<代码>。|xargs-r kill。这样,如果找不到进程,控制台上就不会出现错误(没有运行命令
kill
)@Inian感谢您的回复。-r没有错误,但命令仍然返回…&&1~/php/{print}'。。。它损失了11美元和2美元。@anubhava哇,从来都不知道。非常感谢你。把它写下来作为答案,我会确认你可以使用:
ps aux|awk'/[p]process_name/&&$11~/special_mask/{print$2}'| xargs kill
@anubhava它没有帮助。也许有一种方法可以检查select是否返回非空字符串?@Jens:在
xargs
中使用
-r
标志(
GNU
specific not in
POSIX
),这意味着只有当管道前面的命令生成输出字符串(stdout)时,
xargs
之后的命令才会运行(
kill
)<代码>。|xargs-r kill。这样,如果找不到进程,控制台上就不会出现错误(没有运行命令
kill
)@Inian感谢您的回复。-r没有错误,但命令仍然返回…&&1~/php/{print}'。。。它损失了11美元和2美元。@anubhava哇,从来都不知道。非常感谢你。写下来作为答案,我会确认的