$ 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를 망쳐보려고 했습니다.
답변1
세 줄을 읽고 있는데 이는 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
구분된 모든 위치 매개변수를 포함하는 작은따옴표 문자열로 확장됩니다(기본값은 공백).