Usando o comando watch com um argumento que contém aspas

15

Estou tentando fazer com que o relógio funcione corretamente com comandos que contêm aspas, e a página do manual do relógio não é muito detalhada sobre como as aspas funcionam. Para dar um exemplo concreto, como posso executar o seguinte comando no relógio:

ps -ef | awk -F' ' '{print $2}'

Eu tentei:

watch "ps -ef | awk -F' ' '{print $2}'"

e

watch 'ps -ef | awk -F\' \' \'{print $2}\''

mas nenhum deles funciona corretamente.

jonderry
fonte

Respostas:

18

Eu acho que você tem que escapar do $sinal:

watch "ps -ef | awk -F' ' '{print \$2}'"

caso contrário, seria interpretado pelo shell, o que resultaria em uma string vazia ( "") - ou seja awk, imprimiria a linha inteira.

bmk
fonte
7

Você sempre pode colocar seu comando em um script de shell e depois "assistir" o script.

Resorath
fonte
2

Acabei de encontrar um problema semelhante. Depois de ler o relógio Man Page , encontrei uma solução que poderia funcionar, que é concatenar seqüências de caracteres no bash. O comando final parecia estranho, como:

watch "ps -ef | awk -F' ' '"'{print $2}'"'"

ou

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Adam_Yyx
fonte