Bash 脚本启动一个进程,grep 一行,然后终止它

Bash 脚本启动一个进程,grep 一行,然后终止它

我想获取没有任何类型的 --version 选项的应用程序的版本号。

我正在寻找一个可以启动进程(它会一直运行直到被终止)的 bash 脚本,grep 它的版本号,然后终止它。

就像是:

./server | grep version | kill $PID

那可能吗?

答案1

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

一旦找到 1 个结果,头部就会停止管道。

如果您想捕获变量,您应该能够执行以下操作:

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

编辑:如果可行的话,“字符串”的建议是更好的选择。

答案2

版本字符串是否遵循任何合理的格式?您可以尝试strings针对二进制文件运行,看看是否可以构建一个模式来匹配版本字符串。

否则,这在 bash 中会变得有点不合适。我可能会这样做:

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

编辑:塔兰特的回答比我的好多了。

答案3

您是否真的需要以这种方式运行并终止它,或者您是否可以通过在二进制文件上运行字符串来找到版本?

否则:

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

...应该可以解决问题。

相关内容