개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트: read 기본 사용 법 및 옵션 까지 모두 정리

일요일좋아하는사람 2025. 5. 4. 13:41
728x90
반응형

 

Bash 스크립트에서 사용자 입력을 받거나 파일로부터 데이터를 읽어들이는 데 사용하는 명령어가 바로 read입니다. read 명령은 간단하면서도 강력한 기능을 제공하여, 사용자 상호작용이 필요한 자동화 작업이나 데이터를 입력받아 처리하는 로직을 작성할 때 자주 활용됩니다. 이 글에서는 read 명령의 역할, 사용법, 다양한 옵션들과 실제 예제까지 상세히 설명하겠습니다.

Bash에서 read 명령의 역할

read 명령은 표준 입력(예: 키보드, 파일 등)으로부터 데이터를 읽어 변수에 저장하는 기능을 합니다. 가장 흔한 용도는 사용자로부터 값을 입력받는 것이며, 스크립트 실행 중 동적인 데이터 수집이 가능하게 해줍니다.

read 명령의 기본 사용법

기본 구조는 다음과 같습니다:

read 변수명

예제:

echo "이름을 입력하세요:"
read name
echo "입력한 이름은 $name 입니다."

결과:

이름을 입력하세요:
> 사용자 입력
입력한 이름은 사용자 입력 입니다.

read 명령의 옵션들과 세부 사용법

1. -p (프롬프트 메시지)

역할: 사용자 입력 전 메시지를 출력
사용법: read -p "메시지" 변수명
예제:

read -p "나이를 입력하세요: " age
echo "당신의 나이는 $age 입니다."

결과: 메시지를 출력한 후 입력을 기다립니다.

2. -s (비밀번호 입력 등, 입력 숨김)

역할: 입력 중 화면에 표시되지 않게 처리
사용법: read -s 변수명
예제:

read -sp "비밀번호를 입력하세요: " password
echo "\n비밀번호가 입력되었습니다."

결과: 비밀번호 입력 시 화면에 표시되지 않습니다.

3. -t (입력 제한 시간 설정)

역할: 지정한 시간 내 입력이 없으면 종료
사용법: read -t 시간 변수명
예제:

read -t 5 -p "5초 안에 이름을 입력하세요: " name || echo "시간 초과"

결과: 5초 안에 입력하지 않으면 "시간 초과" 메시지를 출력합니다.

4. -n (입력 받을 문자 수 지정)

역할: 입력 받을 문자 수를 제한
사용법: read -n 문자수 변수명
예제:

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

결과: 사용자가 키 하나를 누르면 바로 진행됩니다.

5. -a (배열로 입력 받기)

역할: 공백으로 구분된 값을 배열로 저장
사용법: read -a 배열명
예제:

echo "단어들을 입력하세요 (공백으로 구분):"
read -a words
echo "첫 번째 단어: ${words[0]}"

결과: 입력된 문자열이 배열로 저장되고, 원하는 요소를 출력할 수 있습니다.

6. -d (종료 문자 지정)

역할: 기본 엔터 대신 다른 문자로 입력 종료
사용법: read -d '종료문자' 변수명
예제:

read -d ':' input
echo "입력된 내용: $input"

결과: 사용자가 ':'를 입력할 때까지 값을 받습니다.

7. 여러 변수에 동시에 입력 받기

역할: 입력값을 공백 기준으로 여러 변수에 나눠 저장
사용법:

read var1 var2 var3

예제:

echo "이름, 나이, 도시를 입력하세요:"
read name age city
echo "$name, $age세, $city에 거주"

결과: 입력된 세 개의 단어가 각각 변수에 저장됩니다.

실제 사용 예제와 결과

예제 스크립트: 사용자 정보 입력

#!/bin/bash

read -p "이름: " name
read -p "이메일: " email
read -sp "비밀번호: " password
echo
read -p "도시에 거주하시나요? (yes/no): " answer

if [ "$answer" == "yes" ]; then
  echo "$name 님은 $email 주소를 가지고 있으며 도시에 거주합니다."
else
  echo "$name 님은 $email 주소를 가지고 있으며 도시에 거주하지 않습니다."
fi

결과 예시:

이름: 홍길동
이메일: hong@test.com
비밀번호: (숨김 입력)
도시에 거주하시나요? (yes/no): yes
홍길동 님은 hong@test.com 주소를 가지고 있으며 도시에 거주합니다.

Bash의 read 명령은 매우 다양한 입력 시나리오에 대응할 수 있는 유연함을 제공합니다. 옵션들을 적절히 조합하면 사용자와 상호작용하는 강력한 스크립트를 만들 수 있으며, 실무 자동화에서 매우 유용하게 활용됩니다.

728x90
반응형