花括号拓展 {,}

Posted 林散

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了花括号拓展 {,}相关的知识,希望对你有一定的参考价值。

扩展(EXPANSION)  
       命令行的扩展是在拆分成词之后进行的。有七种类型的扩展:  brace   expansion(花括号扩展),   tilde   expan‐  
       sion(波浪线扩展), parameter and variable expansion(参数和变量扩展), command substi‐  
       tution(命令替换), arithmetic expansion(算术扩展), word splitting(词的拆分), 和 path‐  
       name expansion(路径扩展).  
       扩展的顺序是:brace  expansion,  tilde expansion, parameter, variable 和 arith‐  
       metic expansion 还有 command substitution  (按照从左到右的顺序),  word  splitting,  
       最后是 pathname expansion.  
       还有一种附加的扩展:process subtitution (进程替换) 只有在支持它 的系统中有效。  
       只有    brace   expansion,   word   splitting,   和   pathname   expansion  
       在扩展前后的词数会发生改变;其他扩展总是将一个词扩展为一个词。 唯一的例外是上面提到的  "$@"  和  "$name[@]"  (参见  
       PARAMETERS参数)。  
   Brace Expansion  
       Brace    expansion    是一种可能产生任意字符串的机制。这种机制类似于    pathname    expansion,  
       但是并不需要存在相应的文件。              花括号扩展的模式是一个可选的              preamble(前导字符),  
       后面跟着一系列逗号分隔的字符串,包含在一对花括号中,           再后面是一个可选的          postscript(附言)。  
       前导被添加到花括号中的每个字符串前面,附言被附加到每个结果字符串之后, 从左到右进行扩展。  
       花括号扩展可以嵌套。扩展字符串的结果没有排序;而是保留了从左到右的顺序。 例如, ad,c,be 扩展为 `ade ace abe'。  
       花括号扩展是在任何其他扩展之前进行的,任何对其他扩展有特殊意义的字符        都保留在结果中。它是严格字面上的。        Bash  
       不会对扩展的上下文或花括号中的文本做任何语义上的解释。  
       正确的花括号扩展必须包含没有引用的左括号和右括号,以及至少一个没有 引用的逗号。任何不正确的表达式都不会被改变。可以用反斜杠来引用 或 ,  
       来阻止将它们识别为花括号表达式的一部分。 为了避免与参数扩展冲突,字符串 $ 不被认为有效的组合。  
       这种结构通常用来简写字符串的公共前缀远比上例中为长的情况,例如:  
              mkdir /usr/local/src/bash/old, gs   new,dist,bu
       或者:  
              chown root /usr/ucb/ex,edit,lib/ex?.?*,how_ex  
       花括号扩展导致了与历史版本的 sh 的一点不兼容。在左括号或右括号作为词的一部分出现时, sh  不会对它们进行特殊处理,会在输出中保留它们。  
       Bash   将括号从花括号扩展结果的词中删除。例如,向   sh  输入  file1,2  会导致不变的输出。同样的输入在  bash  
       进行扩展之后,会输出 file1 file2 .  如果需要同 sh 严格地保持兼容,需要在启动 bash 的时候使用 +B  选项,或者使用  
       set 命令加上 +B 选项来禁用花括号扩展 (参见下面的 shell 内建命令(SHELL BUILTIN COMMANDS) 章节)。  

以上是关于花括号拓展 {,}的主要内容,如果未能解决你的问题,请参考以下文章

C程序花括号嵌套层次统计(新)

如何使用双括号或单括号、圆括号、花括号

在 Jersey Client 2 中编码花括号

我看到花括号、括号和分号彼此相邻,为啥?

刀片引擎:打印三重花括号

使用 Kotlin 的 RxJava 中的花括号和普通括号有啥区别