변수의 명령 출력 및 표준 출력 억제

변수의 명령 출력 및 표준 출력 억제
time=$(TIMEFORMAT="%R"; { time /usr/bin/time -f "\n%E elapsed" curl -s "https://example.com"; } 2>&1)

ElapsedTime=$(echo "$time" | tail -c 23)

위 명령은 예상대로 작동하지만 echo가 표준 출력으로 인쇄되는 것을 원하지 않습니다. 변수에 값을 할당하고 싶습니다.

답변1

첫 번째 할당과 두 번째 할당 사이에는 차이가 없으며 var=$(echo foo)표준 출력에 관한 한 차이도 없습니다.

두 번째 지침에서는 다음을 수행합니다.

ElapsedTime=$(echo "$time" | tail -c 23)

명령 표준 출력(즉, 파이프로 연결된 표준 출력, 이 경우 tailstdout)은 변수 content 및아니요화면에 표시됩니다.

반면에 내부 명령 중 하나가 표준 오류 스트림에 무언가를 출력하는 경우 stderr를 리디렉션하지 않기 때문에 화면에 표시됩니다.

이는 echo "$time"신뢰할 수 없습니다. printf "%s\n" "$time"예상치 못한 가치 부작용을 피하는 것이 좋습니다 time.

tail -c -numberPOSIX이므로 이 명령이 실패하는 것을 원하지 않습니다.

관련 정보