我正在编写一个用于竞赛性编程评审的脚本,这是 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
。