将几个结尾的 Bash 参数作为 for 循环中的命令

Taking the several ending Bash arguments as commands in a for loop

我只是想尝试使名为 loop 的 for 循环脚本更简单一些,或者至少是自定义一些。我希望它在语法中...

loop <start> <end> <command>

我是这样做的,但我不知道如何将命令参数传递到循环中。我知道如何做到这一点的唯一方法是 bash -c 它将选项后的第一个参数作为命令,而 $@ 将接受所有内容。我需要它来忽略前两个参数。这两个之后的所有内容都将在循环中执行。

所以即使是这样的东西也行。

loop 1 1000 for ((i=1; i<1000; i++)); do touch some_dir; done

这是我所拥有的,到目前为止运行良好,显然没有命令。

for ((i=; i<; i++)); do echo "yaaaa!"; done;

我想你想要这个?

function loop
{
    local START=
    local END=
    shift 2
    for LOOP in `seq $START $END`
    do
        "$@"
    done
}

然后您可以将其用作:

loop 1 10 echo "yaaaa!"