我正在寻找我遇到的 Bash 4 问题的解决方案。
Bash 4 能够使用前导零进行迭代。
对于线路:
for i in {001..005}; do echo -n $i" ";done;echo
Run Code Online (Sandbox Code Playgroud)
输出是
001 002 003 004 005
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时:
a="005"; for i in {001..${a}}; do echo $i;done
Run Code Online (Sandbox Code Playgroud)
或类似的东西,结果是:
{001..005}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
您的问题是应用大括号扩展和变量扩展的顺序。您必须强制执行相反的顺序:
a=005
eval echo {001..$a}
Run Code Online (Sandbox Code Playgroud)