Bash (v4 +) 스크립트 내에서 특정 작업이 얼마나 오래 걸리는지 알아보기 위해 time
"별도의"명령 의 출력을 구문 분석하고 Bult 변수 ( let VARNAME=...
) 내에서 (궁극적으로) 캡처하고 싶습니다 .
이제는 time -f '%e' ...
(또는 command time -f '%e' ...
Bash 내장으로 인해) 사용하고 있지만 이미 실행 된 명령의 출력을 리디렉션하기 때문에 명령의 출력을 캡처하는 방법에 대해 정말로 잃어 버렸습니다 time
. 기본적 여기서 문제는 출력을 분리하기 의가 time
실행 된 명령어의 출력에서.
내가 원하는 것은 명령 시작과 완료 사이의 시간 (초)을 계산 하는 기능 입니다. time
명령 또는 해당 내장 장치 일 필요는 없습니다 .
편집 : 아래 두 가지 유용한 답변이 주어지면 두 가지 설명을 추가하고 싶었습니다.
- 실행 된 명령의 출력을 버리고 싶지 않지만 stdout 또는 stderr로 끝나는지는 실제로 중요하지 않습니다.
- 간접 접근 방식에 대한 직접적인 접근 방식을 선호합니다 (즉, 중간 파일에 저장하는 대신 출력을 직접 잡기).
date
지금까지 사용한 솔루션 은 내가 원하는 것에 가깝습니다.
fork()
,execvp()
및wait3()/wait4()
. 이것은 궁극적으로 시간과 친구가하는 일입니다. 파일이나 비슷한 접근 방식으로 리디렉션하지 않고 bash / perl에서 간단한 방법을 알지 못합니다.