Use a saída do comando como argumento no comando watch

0

Eu tenho um relógio em

jq -r '.' $(ls -t | head -1)"

O objetivo é aplicar "jq -r '.'" ao arquivo modificado mais recentemente no diretório. Infelizmente, o comando usado para saber o último arquivo modificado é avaliado quando o relógio é iniciado, mas não na atualização. Como devo escrevê-lo, para que todo o comando seja reavaliado a cada atualização?

Obrigado

    
por MarvinLeRouge 18.10.2018 / 10:08

1 resposta

0

Se você passar o comando entre aspas simples, ele será expandido em cada ciclo de observação, em vez de quando você executar o comando watch, por exemplo:

watch echo $(date)

watch 'echo $(date)'

O primeiro comando imprimirá a data original repetidas vezes, o segundo comando executará o date em cada ciclo e imprimirá uma data diferente.

Isso porque você está passando a string literal echo $(date) para o comando watch, que executa cada ciclo e ecoa a data correta. Se você não usar aspas, o shell expandirá o $(date) e o substituirá pela saída do comando date e passará isso para watch , para que ele imprima a mesma saída várias vezes.

    
por 18.10.2018 / 10:27