这就是原始表达式不起作用的原因。从…巴什:在任何其他展开之前执行大括号展开,并在结果中保留其他展开所特有的任何字符。这是严格意义上的文字。Bash不对扩展上下文或大括号之间的文本应用任何语法解释。所以,支撑展开是早期作为纯文本宏操作所做的事情,在此之前。参数展开shell是宏处理器和更正式的编程语言之间高度优化的混合。为了优化典型的用例,语言变得更加复杂,并接受了一些限制。建议我建议坚持POSIX1特征。这意味着使用for i in <list>; do,如果列表已经已知,则使用while或seq,见:#!/bin/shlimit=4i=1; while [ $i -le $limit ]; do
echo $i
i=$(($i + 1))done# Or -----------------------for i in $(seq 1 $limit); do
echo $idone1.Bash是一个很好的shell,我通过交互方式使用它,但是我不把bash主义放在我的脚本中。脚本可能需要一个更快、更安全、更嵌入风格的shell。