hanker

Linux - read 명령어 (입력 값을 변수에 저장하는 명령어) 본문

SERVER/Linux

Linux - read 명령어 (입력 값을 변수에 저장하는 명령어)

hanker 2025. 4. 19. 02:02
반응형

read 명령어는 표준 입력(키보드 등)으로부터 한 줄(또는 지정한 개수)의 데이터를 읽어 변수에 저장한다.

다양한 옵션으로 프롬프트, 타임아웃, 숨김 입력, 구분자 지정 등을 제어할 수 있다.


1. 옵션 설명
옵션 설명
-p <문자열> 입력 전에 <문자열>을 프롬프트로 출력
-s 입력 내용을 화면에 표시하지 않음(비밀번호 입력 등)
-n <숫자> 최대 <숫자> 글자만 읽고 즉시 리턴
-t <초> 표준 입력 대기 최대 <초> 초, 시간 초과 시 실패
-d <구분자> 기본 \n 대신 <구분자>까지 읽음
-a <배열이름> 공백 기준으로 읽은 단어들을 배열로 저장
-r 백슬래시(\)를 특별 문자로 해석하지 않음 (기본 동작은 특별 처리)
-e Readline 편집 기능 활성화 (커서 이동·이전 히스토리 등)

 


2. 옵션 별 실행 결과

 

1-1. -p : 프롬프트 메시지 출력

#!/bin/bash
read -p "이름을 입력하세요: " name
echo "안녕하세요, $name 님!"

-p 옵션 실행 결과

 

 

1-2. -s : 비밀번호 숨김 입력

read -s -p "비밀번호: " passwd
echo "입력하신 비밀번호는 $(echo ${#passwd})글자입니다."

-s 옵션 비밀번호 숨김 입력

 

 

1-3. -n : 1글자만 읽기

read -n 1 -p "계속하려면 아무 키나 누르세요..." key
echo "누르신 키: '$key'"

-n 옵션 출력 결과

 

 

1-4. -t : 대기 시간 지정

read -t 5 -p "5초 내에 입력해주세요: " input
echo "$input"

대기 시간 지정

 

 

1-5. -d : 해당 구분자까지 읽기

echo "a,b,c" | { IFS= read -d ',' v1; IFS= read -d ',' v2; echo "$v1, $v2"; }

-d 옵션 해당 구분자까지 읽기

 

 

1-6. -a : 배열로 저장 (공백 기준)

read -a arr -p "단어 여러 개를 입력하세요: "
echo "첫 번째 단어: ${arr[0]}, 두 번째 단어: ${arr[1]}"

-a 옵션 출력 결과

 

 

1-7. -r : 백슬래시 무시

read -r -p "문장 입력: " line
echo "해석된 내용: $line"

-r 옵션 백슬래시 무시

 


3. 성능·보안 고려사항

 

성능

- read 자체는 입력 대기 성격이므로 성능 이슈 없음

- 다만 -t 옵션 사용 시 짧은 대기 시간 설정이 필요하다면 너무 작은 값은 사용자 편의 저해 가능

 

보안

-s 옵션으로 비밀번호 등 민감 정보를 화면에 노출하지 않게 변경 가능

-r 옵션을 사용하지 않으면 백슬래시가 이스케이프 처리되어 예상치 못한 동작이 발생할 수 있다.

반응형