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)
명령 표준 출력(즉, 파이프로 연결된 표준 출력, 이 경우 tail
stdout)은 변수 content 및아니요화면에 표시됩니다.
반면에 내부 명령 중 하나가 표준 오류 스트림에 무언가를 출력하는 경우 stderr를 리디렉션하지 않기 때문에 화면에 표시됩니다.
이는 echo "$time"
신뢰할 수 없습니다. printf "%s\n" "$time"
예상치 못한 가치 부작용을 피하는 것이 좋습니다 time
.
tail -c -number
POSIX이므로 이 명령이 실패하는 것을 원하지 않습니다.