읽기 명령을 통해 입력에 여러 변수를 사용하는 방법은 무엇입니까?

읽기 명령을 통해 입력에 여러 변수를 사용하는 방법은 무엇입니까?

저는 GNU bash 버전 4.2.10(1)을 사용하고 있습니다. 단일 변수를 사용하여 여러 변수를 읽고 싶습니다.읽다쉘 스크립트의 명령. 그래서 다음을 시도했습니다.

echo " Enter P N R : "
read P N R

하지만 작동하지 않습니다. P 변수의 단일 값만 요청하고 프롬프트를 반환합니다. 구글링을 했지만 해결책을 찾지 못했습니다.

답변1

read-r, 입력의 단어가 특수 인수의 문자로 구분될 것으로 기대 하지 않고 $IFS(기본값은 SPC, TAB 및 NL이지만 read한 줄만 읽기 때문에 NL은 백슬래시로 끝나지 않으면 계산할 수 없습니다), 백슬래시를 사용하여 구분 기호 문자를 이스케이프 처리하거나 한 줄이 다음 실제 줄에 계속되도록 허용합니다(백슬래시 개행 시퀀스 제거).

따라서 사용자는 여기에 P, N, R 값을 공백이나 탭으로 구분하여 입력해야 합니다. 예:

value_for_P value_for_N value_for_R

또는 값에 공백이 포함될 수 있는 경우:

value\ for\ P value\ for\ N value for R

(여기서 우리는 세 번째 줄 이후의 나머지 줄이 R의 공백을 벗어나는 것을 신경쓰지 않았습니다.단어어쨌든 사용자는 여전히 이스케이프해야 합니다.뒤따라그러나 공간).

사용자가 3행에 값을 입력하게 하려면 3번의 read호출이 필요합니다. 그런 다음 -r백슬래시 처리를 피하고 IFS를 비워야 합니다.

IFS= read -r P
IFS= read -r N
IFS= read -r R

관련 정보