В тестовом наборе 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
— зарезервированное слово в оболочках. Чтобы использовать настоящую команду, попробуйте:
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