首页 > 解决方案 > Bash 循环以每秒运行 N 次命令

问题描述

我正在尝试编写代码,以便命令在 bash shell 脚本中每秒重复 N(比如 10)次。我在发送第一个 10 个命令后让循环等待剩下的秒数时遇到问题。我正在使用 while 循环来启动循环:

while [ $SECONDS -lt $((SECONDS+$time)) ]; do

对于我使用 for 循环的命令数量:

for i in $(seq 1 10); do echo 'Hello!'; done

标签: bashnested-loops

解决方案


您可以sleep在后台启动 a 并等待它:

sleep 1 &
pid=$!

for i in $(seq 1 10); do echo 'Hello!'; done

wait "$pid"

这确保了wait无论 for 循环需要多长时间,都只会等待秒的剩余时间。(如果花费的时间超过 1 秒,则wait立即结束)。


推荐阅读