Использование команды watch с "echo -e"

Я хочу отслеживать строки динамического файла, и я использую watch Команда для этого. У меня есть 2 файла: test-status а также iplist_test, Я контролирую что-то в iplist_test и я печатаю этот вывод test-status, iplist_test Файл имеет 150 строк, и я хочу увидеть результат, как 14/150 или же 25/150 и т.д. Для этого я использую следующую команду:

watch -n .1 echo -e "$(cat test-status | wc -l)\/$(cat iplist_test | wc -l)"

Команда не работает как watch Команда, это статично. Я обновляю вручную для живого результата. Что не так с моей командой?

1 ответ

Решение

Выход статический, потому что $() разрешается вашей оболочкой раньше watch начинается.

Цитирование с '' должно помочь Одиночные кавычки предотвращают расширение, таким образом $() будет передано буквально watchзатем каждый раз анализировал:

watch -n .1 'echo -e "$(cat test-status | wc -l)/$(cat iplist_test | wc -l)"'

Также вы злоупотребляете cat, Это должно работать без лишних cat процессы:

watch -n .1 'echo -e "$(<test-status wc -l)/$(<iplist_test wc -l)"'
Другие вопросы по тегам