使用变量来定义嵌套for循环中的计数器

时间:2017-03-31 17:48:29

标签: bash for-loop

我是bash脚本新手。 我试图在嵌套for循环中使用变量用于计数器,如下所示:

0000000
0000001
...
...
1111110
1111111

输出就是这个(我得到错误):

dir_count=$(find dump_${d}/* -maxdepth 0 -type d | wc -l)
count_by=11

for ((i=0;i<=$dir_count;i+=$count_by))
do
    ((start=$i+1))
    ((end=$count_by+$i))
    echo  $start $end
    for dir in {$start..$end}
        echo $dir
    done
done

1,11,12,22,23,33对我来说都像整数!是否可以输入变量?我以为它不是。

谢谢!

1 个答案:

答案 0 :(得分:1)

bash中,大括号扩展会在变量扩展之前发生,所以你的代码

for dir in {$start..$end}

永远不会做它应该做的事情;在bash中使用适当的循环,使用C风格的for循环作为

for ((dir=start; dir<=end; dir++)); do
    echo "$dir"
done

man bash页面引用

  

[..]在任何其他扩展之前执行Brace扩展,并且在结果中保留对其他扩展特殊的任何字符。它是严格的文本[..]