Bash 为什么只有第一行使用IFS='';
我尝试仅在空格上拆分多行字符串,保留换行符:Bash 为什么只有第一行使用IFS='';,bash,readline,multiline,ifs,Bash,Readline,Multiline,Ifs,我尝试仅在空格上拆分多行字符串,保留换行符: IFS=''读取与命令在同一行上的赋值(它们之间没有分隔符,如;)仅适用于该命令(并在该命令执行期间将变量导出到环境中,但在该命令的其他阶段外壳扩展期间不使用该命令).另一个重要的--关键的--是,你没有将-d传递给你的读取。在读取过程中有两个不同的分隔符:IFS确定输入字段中单词之间的边界-d确定输入之间的边界…如果将其设置为if=''read-r-d''a b c,您将获得预期的行为。如图所示,通常的做法是read-r-d''a | |[$a]]
IFS=''读取与命令在同一行上的赋值(它们之间没有分隔符,如;
)仅适用于该命令(并在该命令执行期间将变量导出到环境中,但在该命令的其他阶段外壳扩展期间不使用该命令).另一个重要的--关键的--是,你没有将-d
传递给你的读取
。在读取过程中有两个不同的分隔符:IFS
确定输入字段中单词之间的边界-d
确定输入之间的边界…如果将其设置为if=''read-r-d''a b c
,您将获得预期的行为。如图所示,通常的做法是read-r-d''a | |[$a]]
,因此,如果成功填充目标变量,则有一个复合命令返回true。顺便说一句,-d'
指NUL(以NUL结尾的C字符串,空字符串的第一个也是唯一一个字符是NUL)。您可以使用printf'\0'
发出它们。
a=[foo
bar
baz
]
b=[]
c=[]
a=[foo]
b=[]
c=[]