bash 기록을 시간 단위로 읽고 결과를 변수에 넣고 싶습니다. 불행하게도 time
(쉘 키워드인) 결과는 에 인쇄되며 stderr
, 분명히 stderr
쉘 키워드에서 리디렉션하는 것은 일반 명령 출력을 리디렉션하는 것과 다르게 작동합니다. 다시 말해서,
foo=$(time history -r 2>&1)
작동하지 않습니다( foo
변수가 비어 있고 출력이 터미널에 인쇄됩니다). time
키워드의 출력을 캡처하는 방법은 무엇입니까 ?
참고: 쉘 내장이므로 외부 명령(예: ) history
을 사용할 수 없습니다. bash에서는 키워드를 사용해야 합니다 .time
/usr/bin/time
time
답변1
다음 구문을 사용할 수 있습니다.
foo=$((time history -r) 2>&1)
명령을 a에 넣고 다음 으로 ()
리디렉션합니다 .stderr
stdout
예:
$ foo=$((time history -r) 2>&1)
$ echo $foo
real 0m0.001s user 0m0.000s sys 0m0.000s
$