在尝试学习如何在 bash 中操作文件内容时,我遇到了以下代码示例:
while IFS=, read -r col1 col2
do
echo "I got:$col1|$col2"
done < myfile.csv
读取实用程序应从标准输入读取一行。
如果我的理解是正确的,这意味着,例如,如果我想read
从 读取行myfile.csv
,我应该添加< myfile.csv
到命令的末尾read
,例如:
read -r col1 col2 < myfiles.csv
然而,在所附代码中,< myfile.csv
被附加在done
关键字之后。这是为什么?
答案1
出于本例中重定向的目的,while 循环中所有内容(包括条件)的标准输入将是myfile.csv
您可以按照您的建议重定向它,但随后将为每个要读取的调用单独设置重定向,并且每次都会只读取第一行。