Script Bash para iniciar um processo, grep uma linha e depois matá-lo

1

Estou tentando obter o número da versão de um aplicativo que não possui nenhum tipo de opção --version.

Estou procurando um script bash que inicie o processo (ele é executado até ser eliminado), grep é o número da versão e, em seguida, mata-o.

Algo como:

./server | grep version | kill $PID

Isso é possível?

    
por whatupdave 08.02.2012 / 01:53

3 respostas

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

A cabeça irá parar o tubo depois de ter encontrado 1 resultado.

Se você deseja capturar a variável que deve conseguir:

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

Editar: as sugestões para 'strings' são um caminho melhor, se viável.

    
por 08.02.2012 / 02:26
2

A string da versão segue algum formato razoável? Você pode tentar executar strings no binário e ver se é possível construir um padrão para corresponder à string de versão.

Caso contrário, isso fica um pouco hacky no bash. Eu provavelmente faria algo como:

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

Edit: A resposta do Tarrant é muito melhor que a minha.

    
por 08.02.2012 / 02:26
0

Você realmente precisa rodar e matar dessa maneira, ou você poderia encontrar a versão executando strings sobre o binário?

Caso contrário:

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

... deve fazer o truque.

    
por 08.02.2012 / 02:38

Tags