본문 바로가기
IT/리눅스 쉘 스크립트

[shell script] 리눅스 read 명령어 사용자로부터 변수 값 입력 받기

by 꾸꾸웍스 2022. 10. 5.
반응형

 

리눅스 read 명령어는 사용자로부터 입력을 받은 값을 출력하는 명령어로 자주 사용하는 옵션에 대한 내용과 쉘 스크립트에서 read 명령어를 사용하는 방법, read 명령어로 배열 입력을 받아 출력하는 방법에 대해 알아보겠습니다.

※ 목차 구성
1) 리눅스 read 명령어란?
2) 리눅스 read 명령어 사용법
3) 쉘 스크립트 read 명령어 사용 예시
4) 쉘 스크립트 read 배열 입력받기

 

반응형

 

리눅스 read 명령어란?

리눅스 read 명령어는 표준 입력인 키보드로부터 사용자의 입력을 받아 변수에 저장하는 명령어입니다. 

 

리눅스 read 명령어 사용법

read 명령어 기본 사용법

리눅스 read 명령어는 한 행에 한 개 또는 여러 단어로 나누어 변수를 지정할 수 있습니다. 아래 예시는 read 명령어로 한 행에 a와 b, c의 변수를 할당하여 출력한 예시입니다. 또한 변수보다 입력한 단어가 많으면 마지막 변수에 모두 할당되어 아래 예시의 c 변수에는 melon과 orange가 할당된 예시입니다.

root@server # read a b c
apple banana melon orange

root@server # echo $a
apple

root@server # echo $b
banana

root@server # echo $c
melon orange

 

하지만 read 명령어에 변수를 할당하지 않고 표준 입력(키보드)을 받았을 때 변수가 없기 때문에 REPLY 변수에 할당됩니다.

root@server # read
Hello Word

root@server # echo $REPLY
Hello Word

 

 

read 명령어 -p 옵션

리눅스 read 명령어 -p 옵션은 prompt의 약자로 문자열을 입력한 것을 출력하고 표준 입력(키보드)으로 받은 내용을 변수에 저장합니다.

read -p "{문자열}" {변수}

 

아래 예시는 "What's your name?: "을 출력하고 "My name is Kim"을 표준 입력으로 입력하였으며 이 값은 name 변수에 할당됩니다.

root@server # read -p "What's your name?: " name
What's your name?: My name is Kim

root@server # echo $name
My name is Kim

 

 

쉘 스크립트 read 명령어 사용 예시

쉘 스크립트에 read 명령어를 활용한 예시로 echo의 -n 옵션은 줄 바꿈을 하지 않습니다. age라는 변수를 표준 입력으로 받아 You are $age years old를 출력하는 스크립트로 표준 입력(키보드)을 받은 것은 age 변수에 할당되어 출력되게 됩니다.

root@server # cat -n test_script.sh
	1 #!/bin/bash
	2
	3 echo -n "age: "
	4 read age
	5 echo "You are $age years old"

root@server # ./test_script.sh
age: 20
You are 20 years old

 

위 예시의 3번과 4번 줄을 한 행으로 줄이는 방법은 read 명령어의 -p 옵션을 활용하여 문자열을 입력한 것을 출력하고 표준 입력(키보드)을 받은 것을 age에 할당하고 같은 값을 출력하는 예시입니다. 위 내용과 결과는 같고 쉘 스크립트의 3번과 4번 줄을 하나로 줄이는 예시입니다.

root@server # cat -n test_script.sh
	1 #!/bin/bash
	2
	3 read -p "age: " age
	4 echo "You are $age years old"

root@server # ./test_script.sh
age: 20
You are 20 years old

 

300x250

 

쉘 스크립트 read 배열 입력받기

리눅스 read 명령어의 -a 옵션은 array의 약자로 변수의 할당된 값들을 배열로 할당하는 옵션입니다. 아래 예시는 프롬프트에서 read 명령어를 이용하여 -a 옵션을 사용했고 number 변수에는 apple01번부터 apple05번까지 배열에 할당되었습니다.

root@server # read -a number
apple01 apple02 apple03 apple04 apple05

root@server # echo ${number[0]}
apple01

root@server # echo ${number[4]}
apple05

root@server # echo ${number[@]}
apple01 apple02 apple03 apple04 apple05

 

반응형
그리드형

댓글