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

関連情報