同様の質問があることを知っていますが、私の状況に十分近い質問が見つかりませんでした...
次のように、bashスクリプトでコマンド時間を測定する必要があります。
mytime="$(time ( ls ) 2>&1 1>null)"
rm null
これは素晴らしい作品です。ただしls
、これをより複雑なものに変更しようとすると問題が発生します。
command="$reg 1d_euler_2nd.rg -nc $nc -ll:cpu $np -ns $nstop"
mytime="$(time ( $command ) 2>&1 1>null)"
rm null
reg
環境変数、、、nc
およびnp
はnstop
すべて私のスクリプトで定義されています。このコードを使用しようとすると、次のエラーが発生します。
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: $
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
どんな助けでも大変感謝します!
申し訳ありません。最小限の作業例を作成しようとしたときに、問題が私のコードの他の場所にあることに気づきました。
答え1
time
サブシェルを使用して出力を個別にキャプチャできます。いいえ変数を使用してコマンドを抽象化します。簡単に簡単な例は次のとおりです。
$ time ( echo "Hello" > example.out 2> example.err ) > time.out 2> time.err
$ ls *{out,err}
example.err example.out time.err time.out
$ cat time.err
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ cat example.out
hello