명령의 여러 줄 출력에 대한 명령 대체?

명령의 여러 줄 출력에 대한 명령 대체?

다음 명령 대체 작업을 수행하려면 어떻게 해야 합니까?

$ 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

timestdout에 아무것도 기록되지 않기 때문에 무엇을 캡처하려는지 잘 모르겠습니다 .

$ 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

관련 정보