在 llvm 3.0 测试套件中,我在 bash 上收到以下错误:
sh: time command not found
代码如下:
if [ "x$RHOST" = x ] ; then
( sh -c "$ULIMITCMD $TIMEIT -p sh -c '$COMMAND >$OUTFILE 2>&1 < $INFILE; echo exit \$?'" ) 2>&1 \
| awk -- '\
BEGIN { cpu = 0.0; }
/^user/ { cpu += $2; print; }
!/^user/ { print; }
END { printf("program %f\n", cpu); }' > $OUTFILE.time
在哪里$TIMEIT = time
。
我尝试更改sh -c
但eval
错误仍然存在。
在尝试解决此错误时,我注意到一些有趣的事情,可能会或可能不会帮助解决这个问题:
跑步sh -c "time"
可以但sh -c "time -p"
不行。
你们有人知道为什么会发生此错误吗?我该如何解决它?
答案1
time
是 shell 中的保留字。要使用实际命令,请尝试:
command time [options] [command]
或者:
/usr/bin/time [options] [command]
来源:
答案2
该程序由软件包提供time
。
例如,像这样安装它:
apt-get install time
这个答案体现了乔恩哈坦。
笔记:
当我使用 GitHub Actions 和使用 的脚本时,我发现这个修复很有用time -p
。所以我在yml
文件中执行了此操作:
- name: Install other packages
run: |
apt-get update
# `time -p` is used for benchmarking tests.
# This fixes error: 'sh: 1: time: not found':
apt-get install time
- name: Set up test database and run tests
run: |
script_with_time.sh