3

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

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

所以如果我跑./forloop.sh 10

我明白了

    10
    {0..10}

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

4

3 回答 3

3

Bash 不会扩大范围。改用这个。

for (( i=0; i<=$b; i++)) 
于 2013-05-16T02:05:42.627 回答
1

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

b=10 
for i in $(eval echo {0..$b})
于 2013-05-16T02:08:59.523 回答
1

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

于 2013-05-16T02:41:45.757 回答