Usando o comando watch com “echo -e”

0

Eu quero monitorar as linhas de um arquivo dinâmico e eu uso o comando watch para isso. Eu tenho 2 arquivos: test-status e iplist_test . Eu controlo algo em iplist_test e digito esta saída em test-status . O arquivo iplist_test tem 150 linhas e eu quero ver um resultado como 14/150 ou 25/150 etc. Eu uso o seguinte comando para isso:

watch -n .1 echo -e "$(cat test-status | wc -l)\/$(cat iplist_test | wc -l)"

O comando não funciona como um comando watch , é estático. Eu atualizo manualmente para resultados ao vivo. O que há de errado com o meu comando?

    
por Gefolge 07.08.2017 / 13:30

1 resposta

1

A saída é estática porque $() é resolvido pelo seu shell antes de watch iniciar.

As citações com '' devem ajudar. Aspas simples impedem a expansão, dessa forma $() será passado literalmente para watch e, em seguida, analisado toda vez:

watch -n .1 'echo -e "$(cat test-status | wc -l)/$(cat iplist_test | wc -l)"'

Você também usa indevidamente cat . Isso deve funcionar sem processos cat desnecessários:

watch -n .1 'echo -e "$(<test-status wc -l)/$(<iplist_test wc -l)"'
    
por 07.08.2017 / 13:41