Bash(v4 +)スクリプト内の特定の操作にかかる時間を調べるために、timeコマンドからの出力を「別々に」解析し、(最終的に)Bash変数内にキャプチャします(let VARNAME=...)。
今、私はtime -f '%e' ...(またはcommand time -f '%e' ...Bashビルトインのために)使用していますが、実行されたコマンドの出力をすでにリダイレクトしているため、timeコマンドの出力をキャプチャする方法について本当に失われています。基本的にはここでの問題は、ある出力を分離するのをtime実行したコマンド(複数可)の出力から。
私が欲しいのは、コマンドを開始してから完了するまでの時間(整数)を数える機能です。timeコマンドまたはそれぞれの組み込みコマンドである必要はありません。
編集:以下の2つの有用な答えを考えて、2つの説明を追加したかった。
- 実行されたコマンドの出力を破棄したくありませんが、それがstdoutまたはstderrで終わるかどうかは実際には関係ありません。
- 間接的な方法よりも直接的な方法をお勧めします(つまり、出力を中間ファイルに保存するのではなく、直接キャッチします)。
dateこれまで使用していたソリューションは、私が望むものに近くなります。
fork()、execvp()とを使用してCプログラムで実行することwait3()/wait4()です。これが最終的には時間と友人がやっていることです。私は、ファイルまたは同様のアプローチにリダイレクトせずにbash / perlでそれを行う簡単な方法を知りません。