Perl의 Time :: HiRes 모듈을 호출하여 경과 시간을 계산하는 스크립트가 있습니다. 다시 틱 통해 펄 인터프리터에쉘 스크립트 변수에 저장된 Perl 코드를 어떻게 실행할 수 있습니까?
use Time::HiRes qw(time); print time
을하고 결과를 다시 가져옵니다 는 기본적으로 스크립트는 다음 한 줄을 전달하여 시간을 가져옵니다.
#/bin/sh
START_TIME=`perl -e 'use Time::HiRes qw(time); print time'`
END_TIME=`perl -e 'use Time::HiRes qw(time); print time'`
ELAPSED_TIME=$(echo "($END_TIME - $START_TIME)" | bc)
echo $ELAPSED_TIME
나는 더 모듈 식 방법으로 재 작성하려고하지만 bash 쉘의 인용 규칙에 의해 난처한 해요.
#/bin/sh
CALCULATE='bc'
NOW="perl -e 'use Time::HiRes qw(time); print time'"
START_TIME=`$NOW`
[Some long running task ...]
ELAPSED_TIME=$(echo "($NOW - $START_TIME)" | $CALCULATE)
echo $ELAPSED_TIME
Bash는 무엇인가 잘못 인용되지 않는다고 불평합니다. 왜 bash는 $ NOW에서 명령을 확장하고 실행되도록 백 tick에 전달하지 않습니까?
셸 스크립트 변수에 perl 코드를 포함시키는 데 여러 가지 방법을 시도했지만 올바르게 이해할 수없는 것 같습니다. .
누구나 쉘 스크립트에서 perl 코드를 올바르게 인용 할 수 있습니다. 함수를 사용하여
@Mat 사람들이 쉽게 대답 할 수 있도록하기 위해 나는 훨씬 더 큰 스크립트의 발췌문을 보여 주었다. 나는 그것을 잘못 잘라내어 붙여 넣었다. 지적 해 주셔서 고마워요. 결정된. 그러나 문제는 아직도 인용하고있다. – GeneQ
참고로, perl-one-liner를'perl -MTime :: HiRes = time -e 'print time''으로 작성할 수 있습니다. –