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