循环数字的变量

rab*_*ius 3 linux bash

如何在for循环数字中使用变量?

例如:

num="12"
for i in {0..$num}; do
        ...
done
Run Code Online (Sandbox Code Playgroud)

dou*_*own 6

使用变量进行扩展扩展并不像预期的那样有效(参见附录B中有关详细信息),即{0..$num}只返回{0..12}字面而不是数字列表.

尝试seq这样:

num="12"
for i in $(seq 0 $num); do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

附录B:多汁的细节

所述的bash手册仰,

扩展的顺序是:大括号扩展,波浪扩展,参数,变量,算术扩展和命令替换(以从左到右的方式完成),单词拆分和文件名扩展.

在shell扩展{0..$num}(支撑扩展)时,$num尚未扩展(可变扩展).序列表达式a..b需要a和b生成序列的数字,但是这里我们有一个数字和一个非数字(文字字符串$num).如果做不到这一点,那么shell就会回归到{0..$num}字面上.然后变量扩展接管,最后我们得到{0..12}