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

  • Как производитель труб может сообщить потребителю трубки, что он достиг «Конец файла»? »(Un-named-pipe, not named-pipe)
  • Curl url txt file, но grep каждый URL отдельно от одного файла
  • Получение stdin из именованного канала
  • команды трубопроводов после трубопровода xargs
  • Неблокированный опрос от двух труб?
  • обрабатывать непрерывный вывод synclient
  • Звуковой сигнал командной строки для одновременного воспроизведения и записи
  • Получить абсолютный путь к файлу OS X
  • 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 
    Interesting Posts

    В чем разница между выпуском и версией ядра / дистрибутива?

    Транспонировать несколько столбцов (разной длины) в строки

    как извлекать части файла в отдельные файлы в linux с помощью команд awk или grep или sed

    Сделать gvim прокруткой до центра после открытия файла с номерами строк?

    Насколько близок cdebconf в качестве замены для debconf?

    Понимание того, когда фоновый процесс завершается

    Как подключиться к Wi-Fi на Qubes OS?

    Свернуть повторяющиеся символы

    Копирование защищенных файлов между серверами в одной строке?

    Каковы могут быть причины, по которым сценарии оболочки убивают себя?

    Можно ли настроить приложения для использования разных сетевых интерфейсов по-разному? Если да, то как?

    Решение круговой зависимости ад для libX11 и libXi

    Проверка загрузки видеокарты через командную строку

    Проблемы с разрешением экрана на Thinkpad E520

    Приостановить систему вместо отключения при перегреве процессора

    Linux и Unix - лучшая ОС в мире.