Posix
將文件的每一行讀入一個變數
$ IFS= read a b c << 'EOF' > line 1 > line 2 > line 3 > EOF $ printf '<%s> <%s> <%s>\n' "$a" "$b" "$c" <line 1> <> <>
我希望將每一行讀入變數。所以它會
<line 1> <line 2> <line 3>
在範例中列印。並保持它的POSIX。我已經嘗試在文件中使用尾隨反斜杠並弄亂 IFS。
您正在閱讀三行,這意味著呼叫
read
三次:{ IFS= read -r a IFS= read -r b IFS= read -r c } <<'END_INPUT' line 1 line 2 line 3 END_INPUT printf '<%s> <%s> <%s>\n' "$a" "$b" "$c"
將此推廣到任意數量的行:
set -- while IFS= read -r line; do set -- "$@" "<$line>" # cheating here by adding on the "<...>" done <<'END_INPUT' line 1 line 2 line 3 line 4 END_INPUT printf '%s\n' "$*"
"$*"
將擴展為一個單引號字元串,該字元串由所有由第一個字元分隔的位置參數組成$IFS
(預設為空格)。