비슷한 질문이 있다는 것을 알고 있지만 내 상황에 충분히 가까운 질문을 찾지 못했습니다...
다음과 같이 bash 스크립트에서 명령 시간을 측정해야 합니다.
mytime="$(time ( ls ) 2>&1 1>null)"
rm null
이것은 훌륭하게 작동합니다. 하지만 ls
이를 더 복잡한 것으로 바꾸려고 하면 문제가 발생합니다.
command="$reg 1d_euler_2nd.rg -nc $nc -ll:cpu $np -ns $nstop"
mytime="$(time ( $command ) 2>&1 1>null)"
rm null
reg
환경 변수, nc
, np
및 는 nstop
모두 내 스크립트에 정의되어 있습니다 . 이 코드를 사용하려고 하면 다음 오류가 발생합니다.
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: $
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
어떤 도움이라도 대단히 감사하겠습니다!
죄송합니다. 최소한의 작업 예제를 만들려고 시도하는 동안 문제가 내 코드의 다른 곳에 있다는 것을 깨달았습니다.
답변1
time
서브셸을 사용하여 출력을 개별적으로 캡처 할 수 있습니다.아니요변수를 사용하여 명령을 추상화합니다. 간략하게 간단한 예를 들면 다음과 같습니다.
$ time ( echo "Hello" > example.out 2> example.err ) > time.out 2> time.err
$ ls *{out,err}
example.err example.out time.err time.out
$ cat time.err
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ cat example.out
hello