파일의 각 줄을 변수로 읽어 들입니다.

파일의 각 줄을 변수로 읽어 들입니다.
$ 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구분된 모든 위치 매개변수를 포함하는 작은따옴표 문자열로 확장됩니다(기본값은 공백).

관련 정보