Usar el comando watch con un argumento que contiene comillas

15

Estoy tratando de hacer que watch funcione correctamente con comandos que contienen comillas, y la página del manual de watch no es muy detallada sobre cómo funcionan las comillas. Para dar un ejemplo concreto, ¿cómo puedo ejecutar el siguiente comando dentro de watch:

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

He intentado:

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

y

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

pero ninguno de estos funciona correctamente.

jonderry
fuente

Respuestas:

18

Supongo que tienes que escapar de la $señal:

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

de lo contrario, sería interpretado por el shell, lo que daría como resultado una cadena vacía ( ""), es decir awk, imprimiría la línea completa.

bmk
fuente
7

Siempre puede poner su comando en un script de shell, luego "mirar" el script.

Resorath
fuente
2

Acabo de encontrar un problema similar. Después de leer el reloj Man Page , encontré una solución que podría funcionar, que es concatenar cadenas en bash. El comando final parecía extraño, como:

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

o

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