Bash脚本启动一个进程,grep一行,然后杀死它

我正在寻找没有任何种类的–version选项的应用程序的版本号。

我正在寻找一个bash脚本,将开始这个过程(它运行,直到死亡),grep它的版本号,然后杀死它。

就像是:

./server | grep version | kill $PID 

那可能吗?

 ./server | grep version | head -n 1 && kill $PID 

find1个结果后,头会停止pipe道。

如果你想捕捉variables,你应该能够做到:

 version=`./server | grep version | head -n 1` && kill $PID echo $version 

编辑:“string”的build议是一个更好的path,如果可行的话。

版本string是否遵循任何合理的格式? 您可以尝试对二进制文件运行strings ,并查看是否可以构build模式以匹配版本string。

否则这在bash中会变得有些黑。 我可能会做这样的事情:

 ./server | grep version &>/tmp/out.$$ & sleep 10 # <-- however long it takes for version to come out. kill %1 

编辑: Tarrant的答案比我的好多了。

你真的需要这样运行和杀死它,或者你可以通过在二进制文件上运行string来find版本?

除此以外:

 ./server | grep user | kill `pgrep -P $$ server` 

…应该做的伎俩。