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

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

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

Я пробовал:

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

а также

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

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

3 ответа

Решение

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

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

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

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

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

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

или же

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Другие вопросы по тегам