所以我正在写一个 for 循环并得到一些错误,以了解我写这个的错误
#! /bin/bash
b=${1:- 10}
echo $b
for i in {0..$b}
do
echo "$i"
done
所以如果我跑./forloop.sh 10
我明白了
10
{0..10}
当我有一个变量作为第二个参数时,为什么范围不起作用?
Bash 不会扩大范围。改用这个。
for (( i=0; i<=$b; i++))
更改脚本以使用以下 ( http://ideone.com/MwAi16 )。
b=10
for i in $(eval echo {0..$b})
bash 的一部分,在将任何参数替换为它们的值之前将之类的东西扩展{1..10}
为运行。由于看起来不像数字范围,因此它不会被扩展。等到参数扩展变成 时,为时已晚;什么都不会出现并评估花括号表达式。1 2 3 4 5 6 7 8 9 10
$b
{1..$b}
{1..10}