Я хочу получить номер версии приложения, у которого нет опции --version.
Я ищу сценарий bash, который запустит процесс (он работает до тех пор, пока не будет убит), наберет номер версии, а затем убьет его.
Что-то вроде:
./server | grep version | kill $PID
Это возможно?
./server | grep version | head -n 1 && kill $PID
Голова остановит трубу после того, как найдет 1 результат.
Если вы хотите зафиксировать переменную, вы должны уметь:
version=`./server | grep version | head -n 1` && kill $PID
echo $version
Изменить: предложения для «строк» - лучший путь, если он жизнеспособен.
Соответствует ли строка версии разумному формату? Вы можете попробовать бежать strings
против двоичного файла и посмотрите, сможете ли вы создать шаблон, соответствующий строке версии.
В противном случае это будет немного взломано в bash. Я бы сделал что-то вроде:
./server | grep version &>/tmp/out.$$ &
sleep 10 # <-- however long it takes for version to come out.
kill %1
Редактировать: Ответ Тарранта намного лучше моего.
Вам действительно нужно запустить и убить его таким образом, или вы можете найти версию, запустив строки поверх двоичного файла?
В противном случае:
./server | grep user | kill `pgrep -P $$ server`
... должно сработать.