期待了解read -d与IFS变量一起出现时的行为
$ cat f1
a:b:c
d:e:f
$ while IFS= read -d: ; do echo $REPLY; done < f1
a
b
c d
e
$ while IFS=: read; do echo $REPLY; done < f1
a:b:c
d:e:f
Run Code Online (Sandbox Code Playgroud)
IFS当您使用以下命令读取多个变量时使用read:
$ echo foo:bar:baz | (IFS=: read FOO BAR BAZ; echo $FOO; echo $BAR; echo $BAZ)
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)
而该-d选项指定您的行分隔符read是什么;read不会超过一行:
$ echo foo:bar:baz%baz:qux:quux% | while IFS=: read -d% FOO BAR BAZ; do echo ---; echo $FOO; echo $BAR; echo $BAZ; done
---
foo
bar
baz
---
baz
qux
quux
Run Code Online (Sandbox Code Playgroud)