Ошибка: `watch &` не работает внутри скрипта.

name_expression=( -type d \( -name.folder1 -o -name.wildcardfolder\* -o -name.folder2 \) )

find /root/ -maxdepth 1 "${name_expression[@]}" -execdir rm -rf {} \;

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

Альтернативой, обеспечивающей полный контроль, было бы использование eval, но это сделало бы остальную часть командной строки более сложной.

0
22.01.2020, 10:52
1 ответ

Два процесса одновременной записи на экран могут привести к сбоям. Попробуйте добавить

reset

после echo y, он должен вернуть терминал в нормальное состояние. Может быть, добавить перед этим также короткий сон, чтобы часы не могли работать после сброса.

Обновление:Если вас не интересует вывод watch, просто перенаправьте оба stdout и stderr в никуда:

( watch -g cat end >& /dev/null ) &

Тогда он не будет загромождать экран и сброс настроек не потребуется.

2
28.01.2020, 02:29

Теги

Похожие вопросы