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.

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.


7

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


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}'"'"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.