저는 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