如何在for循环数字中使用变量?
例如:
num="12"
for i in {0..$num}; do
...
done
Run Code Online (Sandbox Code Playgroud)
使用变量进行扩展扩展并不像预期的那样有效(参见附录B中有关详细信息),即{0..$num}只返回{0..12}字面而不是数字列表.
尝试seq这样:
num="12"
for i in $(seq 0 $num); do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
所述的bash手册仰,
扩展的顺序是:大括号扩展,波浪扩展,参数,变量,算术扩展和命令替换(以从左到右的方式完成),单词拆分和文件名扩展.
在shell扩展{0..$num}(支撑扩展)时,$num尚未扩展(可变扩展).序列表达式a..b需要a和b生成序列的数字,但是这里我们有一个数字和一个非数字(文字字符串$num).如果做不到这一点,那么shell就会回归到{0..$num}字面上.然后变量扩展接管,最后我们得到{0..12}