Использование команды watch с аргументом, который содержит кавычки

15

Я пытаюсь заставить часы работать корректно с командами, которые содержат кавычки, а страница руководства по часам не очень подробно описывает, как работают кавычки. Чтобы привести конкретный пример, как я могу запустить следующую команду внутри часов:

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

Я пробовал:

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

и

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

но ни один из них не работает правильно.

jonderry
источник

Ответы:

18

Я полагаю, вы должны избежать $знака:

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

в противном случае это будет интерпретировано оболочкой, что приведет к пустой строке ( "") - т.е. awkвыведет всю строку.

БМК
источник
7

Вы всегда можете поместить свою команду в сценарий оболочки, а затем «посмотреть» сценарий.

Resorath
источник
2

Я только что встретил похожую проблему. Прочитав страницу просмотра часов , я нашел решение, которое могло бы работать, а именно объединить строки в bash. Последняя команда выглядела странно, например:

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

или

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Adam_Yyx
источник