命令echo {1..3}-{1,2}打印1-1 1-2 2-1 2-2 3-1 3-2。我明白那些花括号的使用方法。但他们到底是什么?
sh / bash的工作是解析/展开它们并将扩展版本交付给已执行的程序吗?
如果是的话,它还能做什么其他的技巧,是否有规范?
还有,它有名字吗?
ls *.txt是否在内部以类似的方式处理?
是否有办法实现n次重复的论点?比如(当然,不起作用,只是一个概念):cat test.pdf{*3}⇒cat test.pdf test.pdf test.pdf?
发布于 2017-12-06 06:31:47
PesaThe的答案的回答涵盖了问题的重要方面。有几件事我想补充。
ls *.txt中的星号由shell处理,因此由shell选项控制,shell内置可以更改这些选项。在这种情况下,可以通过运行set -f禁用星号扩展,并通过set +f再次启用它。
另一件事是,任何想要使脚本可移植的人都应该检查POSIX标准。例如,{1..9..2}在bash 4中扩展为1 3 5 7 9,但在较低的bash版本中或在sh中没有展开。
https://unix.stackexchange.com/questions/409065
复制相似问题