如何在 bash -c 命令中使用 globbing for 循环?

Ell*_*t B 0 freebsd bash

我正在尝试在其中运行一个 for 循环,bash -c以便我可以计时。此代码每次写入 23。我怎样才能让它遍历数字?

time bash -c "for i in {0..23}; do echo $i & done"
Run Code Online (Sandbox Code Playgroud)

此代码有效,但我需要对整个操作计时:

for i in {0..23}; do echo $i & done
Run Code Online (Sandbox Code Playgroud)

echo命令只是为了简单起见。我真的很想跑dd,这就是为什么我用 &

Ste*_*itt 7

有两个问题。

time bash -c "for i in {0..23}; do echo $i & done"
Run Code Online (Sandbox Code Playgroud)

没有按预期工作,因为$i它会立即扩展;你需要使用单引号:

time bash -c 'for i in {0..23}; do echo $i & done'
Run Code Online (Sandbox Code Playgroud)

time等待所有后台作业,您可以使用wait

time bash -c 'for i in {0..23}; do sleep $i & done; wait'
Run Code Online (Sandbox Code Playgroud)

这会导致 shell 等待其所有作业完成,从而time测量所有操作所花费的时间。