为什么 bash 在大括号中接受参数时表现不同?

问题描述

输入:range 6

function range {
        echo {0..$1}
        echo {0..6}
        if [[ $1 =~ 6 ]]
        then
          echo "Equal"
        fi
}

输出

{0..6}

0 1 2 3 4 5 6

为什么输出不同而 $1 和 6 相等?

解决方法

大括号在 $-variables 被扩展之前被扩展,并且大括号范围语法除了一对中间有点的数字之外无法识别任何东西。