2010-11-21 8 views
2

C 프로그램을 실행하고 유닉스에서 time 명령을 사용하여 실행 시간을 측정하는 스크립트를 작성하려고했습니다.경과 시간을 계산하는 쉘 스크립트

cc /home/pop/Daa/abc.c 

r = `time /home/pop/Daa/./a.out` 

echo "recursion" $r >> log.txt 

cc /home/pop/Daa/xyz.c 

d = `time /home/pop/Daa/./a.out ` 

echo "dynamic" $d >> log.txt 

을 다음 그러나 스크립트를 실행 한 후 log.txt에 파일 만 단어 재귀 및 동적을 포함처럼

스크립트 보인다. 시간 값이 누락 된 것 같습니다. 그러나 명령 줄 터미널에서 시간 명령을 실행이 출력은 실행 만이 '진짜'시간을 포함하도록 포맷하고 로그 파일에 기록 얻을 수있는 방법은 다음과 같은 출력

real 0m0.001s 
user 0m0.000s 
sys 0m0.000s 

을했다?

답변

1

time의 출력은 간다 stderr. redirect it입니다.

TIMEFORMAT=%R 
r=$({ time /home/pop/Daa/./a.out; } 2>&1) 

등호 주변에 공백을 넣을 수 없습니다. 역 따옴표 대신에 을 사용하는 것은 preferable입니다. 읽기 쉽기 때문에 작은 따옴표가 혼동되지 않으며 중첩하기가 더 쉽습니다.

1

변수에 값을 할당 할 때 등호 주위에 공백이 없어야합니다. 예를 들어 :

r=`time /home/pop/Daa/./a.out | grep real` 

을하거나 time 명령에 %e을 사용합니다 : 당신은 단지 "진짜"시간을 원하는 경우

r=`time /home/pop/Daa/./a.out` 

grep를 사용

r=`time -f '%e' /home/pop/Daa/./a.out` 
+0

"-f : command not found"- Bash에 내장 된 '시간'이 있기 때문에. 실시간 만 출력하려면'TIMEFORMAT' 변수를 사용하십시오. 또는'time -f'를 사용하기 위해서는'command time -f ...'또는'/ usr/bin/time -f ...'와 같이 외부 유틸리티를 사용하도록 지정해야합니다. –

관련 문제