在bash(shell)中达到变量值之前循环出现问题[duplicate]

oipij1gg  于 2022-12-04  发布在  Shell
关注(0)|答案(1)|浏览(165)

此问题在此处已有答案

How do I iterate over a range of numbers defined by variables in Bash?(20个答案)
3天前关闭。
我想在Bash(shell)中循环n次。n将由用户输入的变量设置。问题是代码不起作用。

value="$1"
for i in {1..$value}
do
   echo $i
done

如果用户选择5(在执行代码时输入数字作为参数),则输出应如下所示:
1 2 3 4 5
但是在我的代码中,它只是跳过了循环,没有输出,也没有错误。
我试过在代码中写入变量“value”的值,但它也不起作用。

r3i60tvu

r3i60tvu1#

如果你看一下Bash手册中关于shell扩展的内容,你会发现大括号扩展发生在变量扩展之前。所以{1..$value}没有扩展成你想要的。你可以用三种主要方法中的一种来解决这个问题:
1.使用替代for循环语法for (( i = 1; i <= value; i++))
1.使用eval使大括号在变量展开后再次展开,如下所示:for i in $(eval echo {1..$value})
1.编辑:您也可以像这样使用seq:for i in $(seq $value)

相关问题