我正在尝试从多行且每行具有多个变量的文件中读取文件。有四个变量:项目,价格,max_qty和min_qty。该文件如下所示:
item price
min_qty max_qty
我尝试过:
while IFS=' ' read -r first second third fourth; do
echo "$first $second $third $fourth
done
这不起作用。我希望输出为:
item price min_qty max_qty
我还考虑过用空格替换新行,然后从该行读取内容。我不想实际更改文件。
答案 0 :(得分:3)
read
两次:
while read -r first second && read -r third fourth; do
echo "$first $second $third $fourth"
done < file
答案 1 :(得分:0)
如果“文件看起来像这样”(两行,每行两个值,而不是像这样的具有多对行的较大文件)是正确的,则可以使用单个read
通过使用-d
选项将行定界符设置为空:
read -r -d '' first second third fourth <file
echo "$first $second $third $fourth"
errexit
或ERR
陷阱,则在执行read
之后,程序将立即安静地退出。有关避免这种情况的方法,请参见Bash ignoring error for a particular command。IFS
(空格+ Tab +换行符)运行。如果可以将IFS设置为程序中其他地方的其他内容,请使用IFS=$' \t\n' read -r -d '' ...
明确设置它。