Назад | Перейти на главную страницу

Сценарий Bash для запуска процесса, введите строку с помощью команды grep, затем завершите ее

Я хочу получить номер версии приложения, у которого нет опции --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`

... должно сработать.