Использование команды 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}'"'"