본문 바로가기
프로그래밍/리눅스

리눅스 필수 커맨드라인 툴 read

by bantomak 2025. 3. 4.
반응형

read 명령어

read는 Bash의 내장 명령어(build-in command)로, 표준 입력에서 한 줄을 읽어 변수에 저장하는 데 사용한다. read는 스크립트에서 사용자 입력을 받아 처리할 때 자주 사용한다. 또한, 파일에서 내용을 읽어 처리할 때도 사용한다. read는 입력된 데이터를 공백으로 구분해 여러 변수에 할당할 수 있다.

 

read의 사용법은 다음과 같다.

read [option] [variable]

📌 read 명령어의 주요 옵션

  • -p : 입력 시 보이는 프롬프트 메시지를 지정
  • -t [second] : 입력 제한 시간(초 단위)을 설정
  • -s : 사용자 입력을 화면에 표시하지 않는다. (예시 : 비밀번호 입력 시)
  • -r : 백슬래시를 이스케이프 문자로 해석하지 않음
  • -a [array] : 입력된 데이터를 배열 변수에 할당

변수 부분에는 read가 읽은 데이터를 저장할 변수의 이름을 지정한다. 변수를 지정하지 않으면 기본으로 REPLY라는 이름의 내부 변수에 데이터를 저장한다. 내부 변수는 $REPLY로 접근이 가능하다.

사용자 입력받아 처리하기

옵션을 넣지 않고 read 명령어만 실행해 보자. 사용자 입력을 기다리며 아무 동작도 하지 않는다. 문자열을 입력한 후 Enter를 누르면 read 명령이 종료된다. REPLY 내부 변수를 출력하면 입력했던 문자열이 출력되는 것을 확인할 수 있다.

read
echo $REPLY

read 명령어 뒤에 문자열을 입력받을 변수 이름을 지정하면 해당 변수에 입력한 문자열이 저장된다. 이때 REPLY 변수의 값은 변경되지 않는다.

read msg
echo $msg

-p 옵션을 사용해 사용자 입력을 받을 때 표시할 프롬프트 메시지를 추가해 보자.

read -p "input reply message: " reply_msg
echo $reply_msg

-t 옵션을 사용해서 사용자 입력시 시간제한을 설정할 수 있다. 지정한 시간이 지나면 입력창이 종료된다.

read -t 5

-s 옵션을 사용하면 사용자가 입력하는 내용을 화면에 출력하지 않을 수 있다. 특히 비밀번호를 입력받을 때 유용하다.

read -s -p "Enter your password: " passwd
echo $passwd

-a 옵션을 사용하면 입력한 문자열을 인덱스 배열에 저장할 수 있다. -a 옵션 바로 뒤에 배열 변수 이름을 입력하면 된다. 문자열은 공백으로 구분한다.

read -a animals -p "input favorite animals: "
echo ${animals[0]}
echo ${animals[1]}
echo ${animals[2]}
echo ${animals[3]}

댓글