shell脚本给出2行输出我只需要1

时间:2016-11-21 06:58:01

标签: linux shell awk pipe

我将以下命令保存在 .sh 文件

prog=$1
ps axf | grep $prog | grep -v grep | awk '{print "kill -9 " $1}'

执行时我得到以下输出

kill -9 3184
kill -9 20359

但我只需要它的第一行,因为那是唯一有效的pid。如何从输出中删除第二行。

1 个答案:

答案 0 :(得分:2)

您想要做的事情有几个问题:

  • 你正在为一些相对简单的事情构建一系列4个命令
  • 您将仅获得包含$prog的流程列表的第一行(不包括您筛选出来的grep $prog);你怎么能确定你想要的过程?

要使用的正确命令是

pkill $prog`

正如评论中所建议的那样,可能会做你想做的事。

只是为了获取信息并回答您的问题,您可以将输出管道传输到head -n 1以仅返回第一行:

<list of commands> | head -n 1

但是,在你的情况下,这会给链添加第五个命令,所以我建议你不要这样做。