bash 키워드(예: 시간)의 표준 오류를 캡처하는 방법은 무엇입니까?

bash 키워드(예: 시간)의 표준 오류를 캡처하는 방법은 무엇입니까?

bash 기록을 시간 단위로 읽고 결과를 변수에 넣고 싶습니다. 불행하게도 time(쉘 키워드인) 결과는 에 인쇄되며 stderr, 분명히 stderr쉘 키워드에서 리디렉션하는 것은 일반 명령 출력을 리디렉션하는 것과 다르게 작동합니다. 다시 말해서,

foo=$(time history -r 2>&1)

작동하지 않습니다( foo변수가 비어 있고 출력이 터미널에 인쇄됩니다). time키워드의 출력을 캡처하는 방법은 무엇입니까 ?

참고: 쉘 내장이므로 외부 명령(예: ) history을 사용할 수 없습니다. bash에서는 키워드를 사용해야 합니다 .time/usr/bin/timetime

답변1

다음 구문을 사용할 수 있습니다.

foo=$((time history -r) 2>&1)

명령을 a에 넣고 다음 으로 ()리디렉션합니다 .stderrstdout


예:

$ foo=$((time history -r) 2>&1)
$ echo $foo
real 0m0.001s user 0m0.000s sys 0m0.000s
$ 

관련 정보