In der LLVM 3.0-Testsuite erhalte ich bei Bash den folgenden Fehler:
sh: time command not found
Der Code lautet:
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
Wo $TIMEIT = time
.
Ich habe versucht, zu wechseln sh -c
, eval
aber der Fehler bestand weiterhin.
Beim Versuch, diesen Fehler zu beheben, ist mir etwas Merkwürdiges aufgefallen, das möglicherweise zur Lösung des Problems beiträgt, möglicherweise aber auch nicht:
Laufen sh -c "time"
funktioniert, sh -c "time -p"
tut es aber nicht.
Hat jemand von euch eine Idee, warum dieser Fehler auftritt und wie ich ihn lösen kann?
Antwort1
time
ist ein reserviertes Wort in Shells. Um den eigentlichen Befehl zu verwenden, versuchen Sie:
command time [options] [command]
oder:
/usr/bin/time [options] [command]
Quelle:
Antwort2
Das Programm wird per time
Paket bereitgestellt.
Installieren Sie es beispielsweise so:
apt-get install time
Diese Antwort enthält den Kommentar vonAbonnieren.
NOTIZ:
Ich fand diesen Fix nützlich, als ich GitHub Actions mit einem Skript verwendete, das verwendet wurde time -p
. Also habe ich Folgendes in der yml
Datei gemacht:
- 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