Я пытаюсь изменить один файл с течением времени, используя подстановку процесса в Bash.

diff <(cat /path/to/file | sort; sleep 20) <(cat /path/to/file)

Я также попробовал:

diff <(cat /path/to/file | sort && sleep 20) <(cat /path/to/file)

Кажется, что различия всегда совпадают, как будто сначала спит, а затем просматривает файлы. Подстановка процесса работает иначе, если используются два разных файла. Какие-либо предложения?

1 ответ1

1

Используйте часы для запуска вашей команды с интервалом.

watch -n 20 'bash -c "diff <(cat /path/to/file | sort) <(cat /path/to/file)"'

Эта конкретная команда может быть написана более просто, как это.

watch -n 20 'bash -c "diff <(sort /path/to/file) /path/to/file"'

Обновить:

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

while true; do diff <(sort /path/to/file) /path/to/file; sleep 20; done

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