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


15

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

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

Я пробовал:

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

и

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

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

Ответы:


18

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

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

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


7

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


2

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

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

или

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.