簡體   English   中英

如何從多行文件中讀取變量?

[英]How to read in variables from multi-line file?

我正在嘗試從多行且每行具有多個變量的文件中讀取。 有四個變量:項目,價格,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

我還考慮過用空格替換新行,然后從該行讀取內容。 我不想實際更改文件。

read兩次:

while read -r first second && read -r third fourth; do 
  echo "$first $second $third $fourth"
done < file

如果確實是“文件看起來像這樣”(兩行,每行兩個值,而不是像這樣具有多對行的更大文件),則可以通過使用-d選項進行一次read來做到這一點將行定界符設置為空:

read -r -d '' first second third fourth <file
echo "$first $second $third $fourth"
  • 該代碼在示例文件中顯示“ item price min_qty max_qty”。
  • 如果設置了errexitERR陷阱,則在執行read后,程序將立即安靜地退出。 有關避免特定命令的方法,請參見Bash忽略特定命令的錯誤
  • 該代碼將使用IFS的默認值(space + tab + newline)。 如果可以在程序的其他位置將IFS設置為其他內容,則使用IFS=$' \\t\\n' read -r -d '' ...顯式設置它。
  • 如果您更改文件格式(所有值都在一行上,每行一個值,...),並且假定它仍然僅包含四個值,則該代碼將繼續起作用。
  • 如果文件實際上包含許多行對,則該代碼將無法工作。 在這種情況下, oguz ismail“讀取兩次”解決方案是不錯的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM