bash -cコマンドでglobbing forループを使用するには?

bash -cコマンドでglobbing forループを使用するには?

bash -c時間を測定できるようにforループを実行しようとしています。このコードは毎回23を書き込みます。数字を繰り返すにはどうすればよいですか?

time bash -c "for i in {0..23}; do echo $i & done"

このコードは機能しますが、作業時間全体を測定する必要があります。

for i in {0..23}; do echo $i & done

このechoコマンドは単純化のためのものです。私は本当に実行したいddので、&を使ってプロセスをバックグラウンドに置きました。

ベストアンサー1

2つの質問があります。

time bash -c "for i in {0..23}; do echo $i & done"

すぐに拡張されるので、期待どおりに機能しません$i。一重引用符を使用する必要があります。

time bash -c 'for i in {0..23}; do echo $i & done'

すべてのバックグラウンドジョブを待つには、time次のものを使用できますwait

time bash -c 'for i in {0..23}; do sleep $i & done; wait'

これにより、シェルはすべてのジョブが完了するのを待ち、すべてのジョブtimeに費やされる時間を測定します。

おすすめ記事