Команда, которая передает свой вход для вывода 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 . Какая команда это делает?

  • Почему эта команда ssh не работает? (cat ./file | ssh <user @ host> "cat | sudo -t -t 'cat> / root / location / file'")
  • / proc / PID / fd / X номер ссылки
  • Обработка одного файла в качестве входных и выходных данных по каналам
  • Операторы печати в реальном времени с тройником в интерактивном скрипте
  • Передача данных в stdin процесса без возникновения EOF впоследствии
  • Размер буфера ядра ящика
  • Дескриптор файла, связанный с сокетом или каналом в proc
  • Выводить трубку в if?
  • 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 
    Linux и Unix - лучшая ОС в мире.