11

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

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

Я пробовал:

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

а также

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

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

3 ответа3

15

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

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

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

5

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

2

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

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

или же

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .