在 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