%EC%9D%98%20%ED%91%9C%EC%A4%80%20%EC%98%A4%EB%A5%98%EB%A5%BC%20%EC%BA%A1%EC%B2%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
$