我显然明白可以为内部字段分隔符变量添加值。例如:
$ IFS=blah
$ echo "$IFS"
blah
$
Run Code Online (Sandbox Code Playgroud)
我也明白这read -r line会将数据保存stdin到名为的变量line:
$ read -r line <<< blah
$ echo "$line"
blah
$
Run Code Online (Sandbox Code Playgroud)
但是,命令如何分配变量值?它是否首先存储来自stdinto 变量的数据line,然后赋予lineto 的值IFS?
说我有这个文件:
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分配整个文件。我应该改变什么?