리눅스 > 쉘스크립트 > 문자열입력받기

Redjini WiKi
< linux‎ | script
Acepro (토론 | 기여)님의 2018년 4월 4일 (수) 12:27 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


Linux Bash shell script에서 문자열 입력 받기

옵션

-n number : number 수만큼의 문자를 입력받음
-p string : 프로프트에 string 문자열 출력
-a        : 입력을 Array형태로 저장
-s        : 입력을 프로프트에 출력하지 않음
-d char   : 입력이 char 이면 read 명령을 종료함.

사용법

#!/bin/sh

# 변수가 한개일경우
read value <<< "1 2 3 4 5"
echo "test1 [${value}]"

# 변수 개수가 부족할 경우 나머지 값은 마지막 변수에 할당
# 값은 IFS에 정의된 값으로 분리
read value1 value2 value3 <<< "1 2 3 4 5"
echo "test2 [${value1}] [${value2}] [${value3}]"

# 변수명에 _ 을 사용할경우 해당 값은 무시됨.
read value1 _ value2 _ value3 <<< "1 2 3 4 5"
echo "test3 [${value1}] [${value2}] [${value3}]"
결과
test1 [1 2 3 4 5] 
test2 [1] [2] [3 4 5] 
test3 [1] [3] [5] 
\문자 입력 허용(옵션 -r)
읽을 데이터에서 "\" 문자 입력을 허용
#!/bin/sh

# \(역슬래쉬)문자 입력 불가
read value <<< "1\n2\t3 4 5"
echo "test4 [${value}]"

# \(역슬래쉬)문자 입력 가능
read -r value <<< "1\n2\t3 4 5"
echo "test5 [${value}]"
결과
test4 [1n2t3 4 5]
test5 [1\n2\t3 4 5]

배열입력(옵션 -a)

읽은 데이터를 배열(Array)에 입력
#!/bin/sh

# 변수가 한개일경우
read -a value <<< "1 2 3 4 5"
echo "test6 [${value}]"
echo "test7 [${value[2]}]"
결과
test6 [1]
test7 [3]

키보드 입력 받기

read -n 1 -p "input [y/N]:"
echo "$REPLY"
#기본적으로 read는 입력값을 REPLY 변수에 저장함

read -n 1 -p "input [y/N]:" yesno
echo "$yesno"
#입력값을 REPLY이 아닌 yesno 변수에 저장

read  -p "input yes|no count :" yesno count
echo "$yesno"
echo "$count"
#입력값을 순차적으로 yesno, count에 저장
#구분자는 기본 공백, 구분자를 변경하려면 IFS 값을 설정