我只是想知道是否可以在 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}}
为四个以空格分隔的标记{
、0
和1
2}
如果要$1
在 bash 中用作范围表达式的结尾,最好使用外部seq
命令:
for number in $(seq "$1")
或者使用 C 风格的for
循环
for ((number=0; number<"$1"; number++))