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

10

Estou tentando fazer com que o relógio funcione corretamente com comandos que contenham citações, e a página do manual do relógio não é muito detalhada sobre como as cotações funcionam. Para dar um exemplo concreto, como posso executar o seguinte comando dentro do 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.

    
por jonderry 28.04.2011 / 22:49

3 respostas

14

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

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

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

    
por 28.04.2011 / 22:55
5

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

    
por 28.04.2011 / 22:55
1

Acabei de encontrar um problema semelhante. Depois de ler a página de manual do Watch , encontrei uma solução que poderia funcionar, que é concatenar strings no bash. O comando final parecia estranho, como:

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

ou

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
    
por 11.12.2014 / 12:56

Tags