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

时间:2015-02-03 01:59:55

标签: bash

我只是在试图为名为loop的循环脚本制作一个更简单或至少是自定义的东西。我希望它在语法中......

loop <start> <end> <command>

我是这样做的,但我无法弄清楚如何将命令参数传入循环。我知道如何做到这一点的唯一方法是bash -c,它将把选项后面的第一个参数作为一个命令,将@ @取出所有内容。我需要它忽略前两个参数。这两个之后的所有内容都将在循环中执行。

所以即使是这样的事也行不通。

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

这就是我到目前为止工作得很好,显然没有命令。

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

1 个答案:

答案 0 :(得分:1)

我想你想要这个?

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

然后您可以将其用作:

loop 1 10 echo "yaaaa!"