如何将start变量传递给for循环,BASH

时间:2014-08-12 05:27:40

标签: bash variables for-loop

美好的一天,

我想知道如何将变量正确传递给for循环。无论语法如何,我只想传递变量并计算两次。

问题:

当我写下来时:

r=0 ; for i in {"$r"..10..2}; do echo "Welcome $i times" ;done

我明白了:

Welcome {0..10..2} times

而不是:

Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

提前感谢任何线索

3 个答案:

答案 0 :(得分:4)

利用变量进行循环边界的for循环的一般格式是:

#!/bin/bash
a=2
b=10
increment=2

for ((i=$a; i<=$b; i+=$increment)); do
    ## <something with $i>
    echo "i: $i"
done

<强>输出:

$ bash forloop.sh
i: 2
i: 4
i: 6
i: 8
i: 10

答案 1 :(得分:1)

为了完整起见,

取代

for i in {"$r"..10..2};

你可以尝试

for i in $(eval echo {$r..10..2});

但是,我强烈反对您使用此解决方案,但请继续使用David的解决方案。

答案 2 :(得分:0)

您不能在{a....b}语法中使用变量。但您可以使用seq

请参阅this