다음은 왜 3 2 1 6 5 4를 인쇄하지 않습니까?
echo '1 2 3 4 5 6' | while read a b c; do echo result: $c b a; done
처음 세 숫자를 순서대로 읽고 역순으로 인쇄한 다음, 마지막 세 숫자를 읽고 역순으로 인쇄하는 것이 더 좋지 않을까요?
답변1
6개의 "단어"가 포함된 줄을 제공하고 이를 세 개의 변수(a, b, c)로 읽습니다. 첫 번째 변수 a에는 값 1이 할당되고, 두 번째 변수 b에는 값 2가 할당되며, c에는 "3 4 5 6" 줄의 나머지 부분이 포함됩니다.
출력은 3 4 5 6 b a
당신이 글을 쓰지 않고 $c $b $a
글만 썼기 때문입니다 $c b a
.
라고 쓰면 $c $b $a
결과는 가 됩니다 3 4 5 6 2 1
.
답변2
혼란스러운 핵심 사항은 다른 답변에서 건너 뛰고 다음에서 찾을 수 있습니다.배쉬 매뉴얼 페이지:
read
…(옵션)…[name ...]
표준 입력에서 한 줄을 읽습니다...., 첫 번째 단어가 첫 번째 단어에 할당됩니다.이름, 두 번째 단어에서 두 번째 단어로이름, 나머지 단어와 중간 구분 기호가 마지막 단어에 할당됩니다.이름… [강조가 추가되었습니다. ]
또는 출력에서 help read
:
읽다…(옵션)…[이름...]
표준 입력에서 한 줄 읽기필드로 분할합니다.
읽다하나의 선표준 입력에서,...단어 분할과 마찬가지로 행은 첫 번째 단어가 첫 번째 NAME에 할당되고 두 번째 단어가 두 번째 NAME에 할당되는 등의 필드로 분할되며 나머지 모든 단어는 마지막 A NAME에 할당됩니다. …
핵심 내용: read
한 줄 이상 읽지 마세요.