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

相关内容