我想获取没有任何类型的 --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`
...应该可以解决问题。