다음 명령 대체 작업을 수행하려면 어떻게 해야 합니까?
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ oldtime="$(time)"
bash: command substitution: line 23: syntax error near unexpected token `)'
bash: command substitution: line 23: `time)"'
한 줄의 출력이 작동하기 때문에 명령 출력에 여러 줄이 있기 때문에 작동하지 않는 것 같습니다.
$ oldtime="$(echo hello)"
$ echo $oldtime
hello
답변1
time
stdout에 아무것도 기록되지 않기 때문에 무엇을 캡처하려는지 잘 모르겠습니다 .
$ time > tmpfile
real 0m0.000s
user 0m0.000s
sys 0m0.000s
그리고 당신은 실제로 아무것도 "시간"을 측정하지 않습니다.
oldtime="$(time echo)"
오류가 발생하지 않지만 여전히 시간을 표준 출력으로 인쇄합니다.
다음과 같은 작업을 수행하고 싶을 수도 있습니다.
$ oldtime="$( { time ; } 2>&1 )"
답변2
이와 같은 서브셸에서 실행하는 경우 times
. 기본적으로 동일합니다. 인수로 전달된 파이프의 처리 시간을 보고하는 대신 상위 쉘에서 사용된 처리 시간을 보고한다는 점만 제외하면(읽기: 명령 서브셸)부모 쉘이 호출된 이후의 모든 자식 - 표준 출력에 기록해야 합니다.
그래서 당신은 이것을 할 수 있습니다 :
pipeline_out=$(some | arbitrary | pipeline; times)
...다 잡아라.
또는 현재 셸 세션의 사용량 요약을 확인하세요.
times