shell 如何理解反斜杠的机制?

yvgpqqbh  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(88)

我在学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


我注意到唯一的区别是第二个命令包含\。有人能解释一下\的机制吗?或者两个命令的工作方式有什么不同?谢谢你,谢谢

nom7f22z

nom7f22z1#

空间用作IFS(内部场分离器)。第一个例子

echo {a,b,c} ,{\ 1," 2",' 3'}

字符串
有两个不同的组{a,b,c},{\ 1," 2",' 3'}。第一个被打印出来,然后第二个被展开并打印出来(逗号,然后是序列中的每一项)。
在第二个示例中,反斜杠转义了IFS,IFS告诉shell它是一个字面空格字符。所以呢

echo {a,b,c}\ ,{\ 1," 2",' 3'}


展开第一个序列中的每个项目,并结合1个空格和1个逗号,然后展开第二个序列中的每个项目,产生:

a , 1 a , 2 a , 3 b , 1 b , 2 b , 3 c , 1 c , 2 c , 3


a , 1a , 2a , 3b , 1等等作为每个组合(然后用空格分隔,同样是因为默认情况下它是IFS)。

相关问题