Bash에 내장된 시간 형식이 올바르지 않습니다.

Bash에 내장된 시간 형식이 올바르지 않습니다.

저는 경쟁 프로그래밍 심사를 위한 스크립트를 작성 중입니다. 다음은 bash 스크립트의 일부입니다.

#!/bin/bash
TIMEFORMAT=%S

if [ $1 = "-cpp" ]; then
    output1=$(g++ -std=c++17 -O2 -Wall -fsanitize=address -lm -s -x c++ b.cpp && ./a.out < input1)
    expected1=$(< output1)
    time1=$(time g++ -std=c++17 -O2 -Wall -fsanitize=address -lm -s -x c++ b.cpp && ./a.out < input1)
    if [[ -z "$expected" ]]; then
        echo "Test Case #1 - Passed! Time: ${time1} sec"
    elif [ $output1 = $expected1 ]; then
        echo "Test Case #1 - Passed."
    else
        echo "Test Case #1 - Failed (check 'dump1.log' for details)."
    fi
fi

C++ 프로그램의 출력은 15. Bash 스크립트의 출력은 다음과 같습니다.

0.172
Test Case #1 - Passed! Time: 15 sec

실제 연결점보다 높은 시간 출력을 인쇄합니다. 조인 포인트에서는 실제 C++ 출력을 인쇄합니다. 나는 bash를 처음 접했기 때문에 무슨 일이 일어나고 있는지 모릅니다.

답변1

간단히 호출하여 내장 함수를 time사용할 수 있습니다 bash. 이것을 확인하려면 type -a time.

프로그램 을 사용하려면 time전체 경로를 사용하십시오 /usr/bin/time.

읽다 man time bash.

관련 정보