Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Bash 스크립트에서 사용자 입력 읽는 방법 – read 명령어 완벽 정리

Bash 스크립트에서 사용자 입력 읽는 방법

리눅스의 read 명령어는 명령줄에서 사용자 입력을 받아 변수에 저장하는 도구입니다. 스크립트 실행 중에 사용자와 상호작용하는 기능이 필요할 때 매우 유용하게 활용됩니다.

read 명령어 기본 문법

read [옵션] 변수명

변수 이름 앞에 $ 기호를 붙이면 저장된 값에 접근할 수 있습니다. 예를 들어 $변수명 형태로 사용합니다.

사용자 입력을 받는 Bash 스크립트 예제

먼저 .sh 확장자를 가진 스크립트 파일을 생성합니다.

touch user_input.sh

선호하는 편집기로 파일을 연 뒤 아래 내용을 작성합니다.

#!/bin/bash

echo "이름을 입력하세요:"
read name
echo "나이를 입력하세요:"
read age
echo "안녕하세요" $name, "당신은" $age "살입니다"

위 스크립트는 사용자로부터 이름과 나이를 차례로 입력받아 인사말과 함께 출력합니다.

참고: read 명령어로 값을 저장할 때는 변수의 자료형(타입)을 별도로 지정할 필요가 없습니다. 모든 입력은 기본적으로 문자열로 처리됩니다.

스크립트를 실행하려면 터미널을 열고 아래 명령어를 입력합니다.

$ sh user_input.sh

이름을 입력하세요:
DevQA
나이를 입력하세요:
12
안녕하세요 DevQA, 당신은 12 살입니다

read 명령어로 프롬프트 메시지 함께 출력하기 (-p 옵션)

echo를 따로 쓰지 않고 read 명령어만으로 안내 메시지를 바로 표시하려면 -p 옵션을 사용합니다.

$ read -p "사용자명을 입력하세요: " username

입력 내용을 화면에 숨기기 (-s 옵션)

비밀번호처럼 입력 내용이 화면에 그대로 노출되지 않아야 하는 경우에는 -s(silent) 옵션을 사용합니다. 이 옵션을 적용하면 사용자가 입력하는 문자가 터미널에 표시되지 않습니다.

$ read -sp "비밀번호를 입력하세요: " password

-p-s는 위 예제처럼 붙여서(-sp) 한 번에 사용할 수도 있습니다.

옵션을 조합한 전체 스크립트

앞서 소개한 두 옵션을 활용해 사용자명과 비밀번호를 입력받는 Bash 스크립트는 다음과 같습니다.

#!/bin/bash

read -p "사용자명을 입력하세요: " username
read -sp "비밀번호를 입력하세요: " password

echo -e "\n사용자명: $username / 비밀번호: $password"

실행 결과:

$ sh user_input.sh

사용자명을 입력하세요: devqa
비밀번호를 입력하세요:
사용자명: devqa / 비밀번호: secret

함께 알아두면 좋은 read 옵션

  • -t 초: 지정한 시간(초) 안에 입력이 없으면 대기를 종료합니다. 예: read -t 5 name
  • -n 개수: 지정한 개수의 문자만큼만 입력받습니다. 예: read -n 1 key (키 하나만 입력)
  • -a 배열명: 공백으로 구분된 여러 값을 배열로 한 번에 저장합니다.