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