Команда, которая передает свой вход для вывода AND, выполняет команду?

Я пытаюсь использовать программу quote чтобы создать небольшой скрипт оболочки, который будет обновлять цены акций каждую секунду. quote должна иметь доступ к Интернету и поэтому имеет небольшую задержку при ее запуске. Я должен очищать экран каждый раз, но я хочу очистить после завершения quote и до того, как cat распечатает свой вывод, поэтому между clear и cat не происходит значительной задержки:

 while true do quote spy gld aapl amzn goog nflx tsla f gm msft | ??? clear | cat sleep 1 done 

Я хочу ??? команда (которая запускается после того, как quote напечатала свой вывод, конечно), чтобы выполнить clear затем передать вывод из quote прямо на вход для cat . Какая команда это делает?

3 Solutions collect form web for “Команда, которая передает свой вход для вывода AND, выполняет команду?”

Я хочу очистить после завершения цитаты и до того, как кошка распечатает свой результат

Итак, что вы ищете, на самом деле не работает, а затем cat (что было бы легко: quote … | { clear; cat; } ), потому что cat все равно начнет печатать до завершения quote . Труба не решит вашу проблему, поскольку она запускает производителя и потребителя параллельно. Вместо этого вам нужно сохранить вывод quote , а затем отобразить его. Сохраните вывод подстановки команды в переменную.

 text=$(quote spy gld aapl amzn goog nflx tsla f gm msft) clear echo "$text" 

Это удаляет пустые строки в конце вывода. Если это неприемлемо, вы можете обойти эту функцию, распечатав лишнюю непустую строку в конце и отключив ее. Команда echo также искажает несколько коротких строк, которые начинаются с - .

 text=$(quote spy gld aapl amzn goog nflx tsla f gm msft; echo .) clear printf %s "${text%.}" 

Grats, чтобы заставить его работать, но похоже, что вы повторно изобретаете «часы».

Кроме того, запрос с интервалом в одну секунду может быть немного чрезмерным? Я бы выбрал 20 секунд и более, особенно когда «смотреть» может показать вам различия между прогонами.

 watch -n 20 -d quote spy gld aapl amzn goog nflx tsla f gm msft 

Это не совсем то, что я спросил, но он выполняет свою работу. Я устанавливаю переменную на вывод quote . Я не думал об этом сначала, потому что я новичок в Bash …

 clear while true do OUTPUT="$(quote spy gld aapl amzn goog nflx tsla f gm msft)" clear echo "${OUTPUT}" sleep 1 done 
  • Результаты трубы grep в поиске
  • Вывод трубопровода в текстовый файл в цикле for
  • Можно ли использовать Open Office через STDIN?
  • Как влиять на цикл bash while с временной глобальной переменной?
  • cmd2 `cmd1` vs cmd1 | xargs cmd2
  • Bash - перенаправление вывода в переменную или файловый дескриптор, затем чтение из дескриптора переменной или файла
  • Как открыть файл с наибольшим количеством совпадений для данного регулярного выражения?
  • Возможно ли создать динамический контент при операции чтения файлов?
  • Развернуть переменную среды из PIPE (SHELL)
  • Можно ли сделать текст вывода zcat, даже если он несжатый?
  • Текст с круговым отключением через zip, unzip с ошибкой «лишних байтов» в OS X
  • Лучше, чем `tee | разрезать | ... | paste`
  • Linux и Unix - лучшая ОС в мире.