sh: команда времени не найдена
В тестовом пакете llvm 3.0 фрагмент кода, приведенный ниже, выдает следующую ошибку в bash:
sh: команда времени не найдена
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 = время.
Я попытался изменить "sh -c" на "eval", но ошибка продолжалась.
Пытаясь решить эту ошибку, я заметил кое-что забавное, что может помочь, а может и не помочь решить эту проблему: запуск sh -c "time" работает, а sh -c "time -p" - нет.
Кто-нибудь из вас, ребята, имеет какое-либо представление о том, почему происходит эта ошибка и как мне ее решить?
заранее спасибо
2 ответа
Чтобы ответить на это здесь: time
это зарезервированное слово в оболочках. Чтобы использовать фактическую команду, попробуйте command time [options] [command]
или же /usr/bin/time [options] [command]
,
Источник: https://askubuntu.com/a/86196
Программу предоставляет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