在 for 循环中使用变量 bash

在 for 循环中使用变量 bash

我只是想知道是否可以在 for 循环中使用变量?我尝试过:

for number in { eval echo {0..$1}}
do 
    echo 5
done

我希望它打印出我输入提示的 5 次,但是,如果我输入:它会出现奇怪的行为:

./test.sh 2

它应该打印出 5 两次,但它打印出 5 四次。有人能帮我解决这个问题吗?还有为什么它打印出 4 次而不是 2 次?

编辑:大部分情况下

for number in $(seq "$2")

有效但如果我尝试用它进行计算,它会破坏我的代码:

time=1
total=5
for number in $(seq "$2")
do
    echo "$time + $total" | bc
done

给出:seq:无效浮点参数:'' 尝试“seq --help”获取更多信息。有人能告诉我如何修复它吗?

答案1

它打印出 5 四次,因为结果{ eval echo {0..2}}为四个以空格分隔的标记{012}

如果要$1在 bash 中用作范围表达式的结尾,最好使用外部seq命令:

for number in $(seq "$1")

或者使用 C 风格的for循环

for ((number=0; number<"$1"; number++))

相关内容