【发布时间】:2015-12-10 00:56:34
【问题描述】:
$ set a b c
$ echo $1 $2 $3
a b c
$ echo ${1..3}
-bash: ${1..3}: bad substitution
我想用大括号扩展来回显 $1 $2 $3。但它不起作用。
扩展的顺序是:大括号扩展、波浪号扩展、参数、变量和算术扩展和命令替换(在一个 从左到右的方式)、分词和路径名扩展。
根据bash手册,大括号扩展是在参数扩展之前进行的。
所以我认为bash应该先对${1..3}进行大括号扩展,将其转换为echo $1 $2 $3,然后再进行参数扩展。
然而,事实是 bash 抱怨 ${1..3} 是一个糟糕的替代品。
这是为什么呢?
PS: 谢谢你们!你们所有的答案都很棒。但我认为
Ignacio Vazquez-Abrams 的回答更接近我想要的。
【问题讨论】:
标签: bash brace-expansion parameter-expansion