Utilizzo del comando watch con un argomento che contiene virgolette


15

Sto cercando di far funzionare correttamente l'orologio con i comandi che contengono virgolette e la pagina man di watch non è molto dettagliata su come funzionano le virgolette. Per fare un esempio concreto, come posso eseguire il seguente comando all'interno di watch:

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

Ho provato:

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

e

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

ma nessuno di questi funziona correttamente.

Risposte:


18

Immagino che tu debba sfuggire al $segno:

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

altrimenti verrebbe interpretato dalla shell che si tradurrebbe in una stringa vuota ( "") - cioè awkstamperebbe l'intera riga.


7

Puoi sempre inserire il tuo comando in uno script di shell, quindi "guardare" lo script.


2

Ho appena riscontrato un problema simile. Dopo aver letto la pagina man dell'orologio , ho trovato una soluzione che poteva funzionare, ovvero concatenare le stringhe in bash. Il comando finale sembrava strano, come ad esempio:

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

o

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.