$ 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)的答案更接近我想要的。
它认为花括号是参数替换的一部分,因为它跟随一个美元符号,并且“ $ 1..3”是无效的变量名称。
请尝试使用“ $ {@:1:3}”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句