此问题在此处已有答案:
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”的值,但它也不起作用。
1条答案
按热度按时间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)