Utilisation de la commande watch avec un argument contenant des guillemets


15

J'essaie de faire fonctionner watch correctement avec des commandes qui contiennent des guillemets, et la page de manuel watch n'est pas très détaillée sur le fonctionnement des guillemets. Pour donner un exemple concret, comment puis-je exécuter la commande suivante à l'intérieur de watch:

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

J'ai essayé:

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

et

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

mais ni l'un ni l'autre ne fonctionne correctement.

Réponses:


18

Je suppose que vous devez échapper au $signe:

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

sinon, il serait interprété par le shell, ce qui entraînerait une chaîne vide ( "") - c'est-à-dire awkafficherait la ligne entière.


7

Vous pouvez toujours mettre votre commande dans un script shell, puis "regarder" le script.


2

Je viens de rencontrer un problème similaire. Après avoir lu la page de manuel de la montre , j'ai trouvé une solution qui pourrait fonctionner, qui est de concaténer des chaînes en bash. La commande finale avait l'air bizarre, comme:

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

ou

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.