所以我写了一个for循环并得到一些错误,以便了解我写的错误
#! /bin/bash
b=${1:- 10}
echo $b
for i in {0..$b}
do
echo "$i"
done
所以,如果我运行./forloop.sh 10
我得到了
10
{0..10}
当我将变量作为第二个参数时,为什么范围不起作用?
答案 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}
时,为时已晚;什么都不会出现并评估大括号的表达。