如何';支架扩展';在Bash工作?

如何';支架扩展';在Bash工作?,bash,brace-expansion,Bash,Brace Expansion,这里有一个例子 这是如何工作的? 我更改此命令如下: $ echo {file1,file2}\ {\ A," B",' C'} file1 file2 A B C $ echo {file1,file2}\ -{\ A," B",' C'} file1 - A file1 - B file1 - C file2 - A file2 - B file2 - C 为什么第一个命令与示例中的命令不同? 救命啊 我知道我引入了一个额外的空间。如果将一个额外的空格更改为其他内容(冒

这里有一个例子

这是如何工作的?
我更改此命令如下:

$ echo {file1,file2}\  {\ A," B",' C'}  
file1  file2   A  B  C
$ echo {file1,file2}\ -{\ A," B",' C'}  
file1 - A file1 - B file1 - C file2 - A file2 - B file2 - C
为什么第一个命令与示例中的命令不同?
救命啊

我知道我引入了一个额外的空间。如果将一个额外的空格更改为其他内容(冒号、破折号等),则一切正常
没有关于以下命令的详细信息:echo{A”,“B”,“C'}\{D”,“E”,“F'}\{G”,“H”,“I'}in。我想知道更多

为什么第一个命令的工作方式与示例中的命令不同

因为您引入了一个额外的空间:

#                     |==> This is it!
#                     |
$ echo {file1,file2}\  {\ A," B",' C'}
file1  file2   A  B  C
$ echo {file1,file2}\ {\ A," B",' C'}    # This is probably what you expected!
file1  A file1  B file1  C file2  A file2  B file2  C
额外的空间会导致shell首先展开
{file1,file2}
,然后展开
{\A,“B”,“C'}


引述自:

要扩展的模式采用可选前导的形式, 后跟一系列逗号分隔的字符串或序列号 表达式,后跟可选的 后记前导是包含在中的每个字符串的前缀 然后将大括号和postscript附加到每个结果中 字符串,从左向右展开

如果在大括号展开后引入空格(后面跟两个空格就是空格!),则以下标记不再被视为postscript,而是单独展开

为什么第一个命令的工作方式与示例中的命令不同

因为您引入了一个额外的空间:

#                     |==> This is it!
#                     |
$ echo {file1,file2}\  {\ A," B",' C'}
file1  file2   A  B  C
$ echo {file1,file2}\ {\ A," B",' C'}    # This is probably what you expected!
file1  A file1  B file1  C file2  A file2  B file2  C
额外的空间会导致shell首先展开
{file1,file2}
,然后展开
{\A,“B”,“C'}


引述自:

要扩展的模式采用可选前导的形式, 后跟一系列逗号分隔的字符串或序列号 表达式,后跟可选的 后记前导是包含在中的每个字符串的前缀 然后将大括号和postscript附加到每个结果中 字符串,从左向右展开


如果在大括号展开后引入空格(退格后加两个空格即为空格!),则以下标记不再视为postscript,而是单独展开。

谢谢。我知道我引入了一个额外的空间。如果将一个额外的空格更改为其他内容(冒号、破折号等),则一切正常。在中没有关于echo{A”,“B”,“C'}\{D”,“E”,“F'}\{G”,“H”,“I'}的详细信息。我想知道更多关于它的信息。@android_-su请看上面的编辑。我希望它澄清@android_-su试试这个:
echo{file,image}{0..4}.{raw,png,txt}
。。。你可以试一下…@android_-su:区别在于没有引号的空格分隔参数,而冒号或破折号则没有。例如,
touch A B
有两个独立的参数,
A
B
,因此它创建两个文件,而
touch A:B
只有一个参数,
A:B
,因此它只创建一个文件。谢谢。我知道我引入了一个额外的空间。如果将一个额外的空格更改为其他内容(冒号、破折号等),则一切正常。在中没有关于echo{A”,“B”,“C'}\{D”,“E”,“F'}\{G”,“H”,“I'}的详细信息。我想知道更多关于它的信息。@android_-su请看上面的编辑。我希望它澄清@android_-su试试这个:
echo{file,image}{0..4}.{raw,png,txt}
。。。你可以试一下…@android_-su:区别在于没有引号的空格分隔参数,而冒号或破折号则没有。例如,
touch A B
有两个独立的参数,
A
B
,因此它创建了两个文件,而
touch A:B
只有一个参数,
A:B
,因此它只创建了一个文件。如果不占用额外的空间,一切都会好起来:
echo{file1,file2}\\\\\\\\ A,“B”,“C'}
如果您避开添加的空间,一切又会好起来:
echo{file1,file2}\\\\{\A,“B”和“C”}