입력을 출력으로 전달하고 명령을 실행하는 명령입니까?

입력을 출력으로 전달하고 명령을 실행하는 명령입니까?

quote나는 매 순간 주가를 업데이트하는 작은 쉘 스크립트를 만들기 위해 이 프로그램을 사용하려고 합니다 . quote인터넷에 대한 액세스가 필요하므로 약간의 지연 시간으로 실행됩니다. 매번 화면을 지워야 하지만 quote작업이 완료된 후 출력을 인쇄하기 전에 화면을 지워 cat다음 사이에 눈에 띄는 지연이 없도록 하고 싶습니다.clearcat

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

명령 ???을 실행하고(물론 출력을 인쇄한 후 ) quote출력 을 . 이 순서는 무엇입니까?clearquotecat

답변1

작동하게 되어 기쁘지만, "시계"를 재창조하고 있는 것 같습니다.

또한 1초 간격으로 쿼리하는 것은 약간 과잉일까요? 특히 "관찰"을 통해 실행 간의 차이를 확인할 수 있다면 20초 이상을 사용하겠습니다.

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

답변2

견적이 완료된 후 cat이 출력을 인쇄하기 전에 지우고 싶습니다.

clear인쇄가 완료되기 전에 계속 시작 되므로 찾고 있는 내용이 실제로 실행되지 않습니다 cat(쉽습니다 :). 파이프라인은 생산자와 소비자를 병렬로 실행하기 때문에 문제를 해결하지 못합니다. 대신 출력을 저장 한 다음 표시해야 합니다. 출력을 저장quote … | { clear; cat; }catquotequote명령 대체변수로.

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%.}"

답변3

정확히 내가 요청한 것은 아니지만 작업이 완료되었습니다. 의 출력에 변수를 설정했습니다 quote. Bash를 처음 접했기 때문에 처음에는 이런 생각을 하지 못했습니다.

clear
while true
do
   OUTPUT="$(quote spy gld aapl amzn goog nflx tsla f gm msft)"
   clear
   echo "${OUTPUT}"
   sleep 1
done

관련 정보