time
Bash(v4 +)スクリプトの特定の操作にかかる時間を確認するために、コマンドの出力を「別々に」解析して(最終的に)let VARNAME=...
Bash変数()にキャプチャしたいと思います。
time -f '%e' ...
私は(または組み込みのBashのために)使用していますが、command time -f '%e' ...
実行されたコマンドの出力をリダイレクトしたので、コマンドの出力をキャプチャする方法がわかりませんtime
。基本的にここで問題は別々の出力time
コマンド実行の出力です。
私が望むもの特徴開始コマンドと完了の間の秒数を計算します。time
必ずしもコマンドや対応する組み込みコマンドである必要はありません。
編集する:以下の2つの有用な答えに基づいて、2つの説明を追加したいと思います。
- 実行されたコマンドの出力を破棄したくありませんが、それがstdoutで終わってもstderrで終わっても構いません。
- 私は間接的なアプローチ(つまり、出力を中間ファイルに保存する代わりに直接キャプチャする)よりも直接的なアプローチを好みます。
これまで使用されているソリューションは、date
私が望むソリューションに近いです。
ベストアンサー1
出力をtime
varに入れるには、次のコマンドを使用します。
usr@srv $ mytime="$(time ( ls ) 2>&1 1>/dev/null )"
usr@srv $ echo "$mytime"
real 0m0.006s
user 0m0.001s
sys 0m0.005s
utimeなどの単一の時間タイプのみを要求できます。
usr@srv $ utime="$( TIMEFORMAT='%lU';time ( ls ) 2>&1 1>/dev/null )"
usr@srv $ echo "$utime"
0m0.000s
時間を取得するには、次を使用してdate +%s.%N
実行前後の時間を取得し、差を計算することもできます。
START=$(date +%s.%N)
command
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
# echo $DIFF