for变量范围内的for循环不起作用

时间:2013-05-16 02:02:19

标签: bash shell

所以我写了一个for循环并得到一些错误,以便了解我写的错误

    #! /bin/bash
    b=${1:- 10}
    echo $b
    for i in {0..$b}
    do
            echo "$i"
    done

所以,如果我运行./forloop.sh 10

我得到了

    10
    {0..10}

当我将变量作为第二个参数时,为什么范围不起作用?

3 个答案:

答案 0 :(得分:3)

Bash并没有扩大范围。请改用它。

for (( i=0; i<=$b; i++)) 

答案 1 :(得分:1)

更改脚本以使用以下内容(http://ideone.com/MwAi16)。

b=10 
for i in $(eval echo {0..$b})

答案 2 :(得分:1)

{1..10}之类的内容扩展为1 2 3 4 5 6 7 8 9 10的bash部分会在$b之类的任何参数被其值替换之前运行。由于{1..$b}看起来不像数字范围,因此不会扩展。当参数扩展变为{1..10}时,为时已晚;什么都不会出现并评估大括号的表达。