无法将括号扩展与bash中的参数扩展结合使用

慧虎
$ 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)的答案更接近我想要的。

伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)

它认为花括号是参数替换的一部分,因为它跟随一个美元符号,并且“ $ 1..3”是无效的变量名称。

请尝试使用“ $ {@:1:3}”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章