本站点和 StackOverflow 上的以下几个线程有助于理解IFS
工作原理:
但我还有一些简短的问题。我决定在同一篇文章中问他们,因为我认为这可能有助于更好的未来读者:
一季度。 IFS
通常在“字段拆分”的上下文中讨论。是场分裂一样的分词?
Q2: POSIX 规范说:
如果IFS 的值为空,则不进行字段拆分。
设置IFS=
是否与设置IFS
为空相同?这也是将其设置为 an 的意思empty string
吗?
Q3:在 POSIX 规范中,我阅读了以下内容:
如果没有设置 IFS,shell 的行为就像 IFS 的值是
<space>, <tab> and <newline>
假设我想恢复IFS
. 我怎么做?(更具体地说,我如何引用<tab>
和<newline>
?)
Q4:最后,这段代码如何:
while IFS= read -r line
do
echo $line
done < /path_to_text_file
Run Code Online (Sandbox Code Playgroud)
如果我们将第一行更改为
while read -r line # Use …
Run Code Online (Sandbox Code Playgroud) 说我有这个文件:
hello
world
hello world
Run Code Online (Sandbox Code Playgroud)
这个程序
#!/bin/bash
for i in $(cat $1); do
echo "tester: $i"
done
Run Code Online (Sandbox Code Playgroud)
产出
tester: hello
tester: world
tester: hello
tester: world
Run Code Online (Sandbox Code Playgroud)
我希望for
对每一行进行迭代,分别忽略空格,即最后两行应替换为
tester: hello world
Run Code Online (Sandbox Code Playgroud)
使用引号for i in "$(cat $1)";
会立即i
分配整个文件。我应该改变什么?