我在学bash。当我试图进入
echo {a,b,c} ,{\ 1," 2",' 3'}
字符串它回来了
a b c , 1 , 2 , 3
型当我试图进入
echo {a,b,c}\ ,{\ 1," 2",' 3'}
型它回来了
a , 1 a , 2 a , 3 b , 1 b , 2 b , 3 c , 1 c , 2 c , 3
型我注意到唯一的区别是第二个命令包含\。有人能解释一下\的机制吗?或者两个命令的工作方式有什么不同?谢谢你,谢谢
\
nom7f22z1#
空间用作IFS(内部场分离器)。第一个例子
字符串有两个不同的组{a,b,c}和,{\ 1," 2",' 3'}。第一个被打印出来,然后第二个被展开并打印出来(逗号,然后是序列中的每一项)。在第二个示例中,反斜杠转义了IFS,IFS告诉shell它是一个字面空格字符。所以呢
{a,b,c}
,{\ 1," 2",' 3'}
型展开第一个序列中的每个项目,并结合1个空格和1个逗号,然后展开第二个序列中的每个项目,产生:
型a , 1和a , 2和a , 3和b , 1等等作为每个组合(然后用空格分隔,同样是因为默认情况下它是IFS)。
a , 1
a , 2
a , 3
b , 1
1条答案
按热度按时间nom7f22z1#
空间用作IFS(内部场分离器)。第一个例子
字符串
有两个不同的组
{a,b,c}
和,{\ 1," 2",' 3'}
。第一个被打印出来,然后第二个被展开并打印出来(逗号,然后是序列中的每一项)。在第二个示例中,反斜杠转义了IFS,IFS告诉shell它是一个字面空格字符。所以呢
型
展开第一个序列中的每个项目,并结合1个空格和1个逗号,然后展开第二个序列中的每个项目,产生:
型
a , 1
和a , 2
和a , 3
和b , 1
等等作为每个组合(然后用空格分隔,同样是因为默认情况下它是IFS)。