Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么只有第一行使用IFS='';_Bash_Readline_Multiline_Ifs - Fatal编程技术网

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=[]