【发布时间】:2017-09-11 08:08:40
【问题描述】:
在我的 makefile 中我有一个命令
kill `ps aux | awk '/process_name/' | awk '$11 ~ /special_mask/ {print $2}'`
它通过终端工作,但是当我尝试通过命令make my-command 调用它时,它返回
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 kill -
@anubhava 它没有帮助。也许有一种方法可以检查 select 返回的不是空字符串?
-
@Jens:在
xargs中使用-r标志(GNU不在POSIX中),这意味着只有在管道之前的命令产生输出字符串(stdout)时,命令之后xargs运行(kill在你的情况下)。.. | xargs -r kill。这样如果找不到进程,控制台上就不会出现错误(命令kill没有运行) -
@Inian 感谢您的回复。 -r 没有错误,但是命令仍然返回 ...&& 1 ~ /php/{print }'... 它损失了 11 美元和 2 美元。
-
@anubhava 哇,从来不知道。非常感谢。把它写成答案,我会确认它
标签: bash