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