본문 바로가기
Old Posts/Linux

[Bash] 쉘 스크립트에서 사용자 입력 받기 (read 명령어 사용법)

by A6K 2022. 8. 27.

쉘 스크립트를 작성하다보면 사용자의 입력을 받아야 하는 경우가 있다. Bash에서는 read 명령어를 이용해 사용자로부터 입력을 받을 수 있다.

read 명령어로 사용자 입력 받기

사용자로부터 입력을 받기위해 read 명령어를 사용할 수 있다. read 명령어를 사용하는 예제를 살펴보자.

#!/bin/bash

echo "What is your name?"
read name
echo "Hello, $name!!"

사용자로부터 이름을 입력받아 인사를 하는 간단한 예제다. 이를 실행하면 다음과 같은 결과를 얻을 수 있다.

$ bash test.sh
What is your name?
Dave
Hello, Dave!!

두개 이상의 입력 받기

하나의 read 명령을 이용해 두 개 이상의 입력을 받을 수 있다. 공백 문자를 이용하면 두 개 이상의 입력을 받아서 변수에 저장할 수 있다.

#!/bin/bash

echo "What is your name and age?"
read name age
echo "Your name is $name and You are $age years old"

이를 실행하면 다음과 같은 결과를 얻을 수 있다.

$ bash test.sh
What is your name and age?
Dave 27
Your name is Dave and You are 27 years old

만약 N개의 입력을 배열 형태로 받고 싶으면 -a 옵션을 사용해 받아오면 된다.

#!/bin/bash

echo "Your hobby"
read -a hobbies

echo "Number of hobbies : ${#hobbies[*]}"
for hobby in "${hobbies[@]}"
do
  echo "Hobby : $hobby"
done

이를 실행하면 다음과 같은 결과를 얻을 수 있다.

$ bash test.sh
Your hobby
soccer baseball game
Number of hobbies : 3
Hobby : soccer
Hobby : baseball
Hobby : game

프롬프트에 이어서 입력 받기

echo 를 이용해 메시지를 출력하면 라인이 바뀐다. 메시지 바로 뒤에서 사용자에게 입력을 받고 싶으면 -p 옵션을 이용하면 된다.

#!/bin/bash

read -p "Your name : " name
echo "Your name is $name"

이 코드를 실행하면 다음과 같다.

$ bash test.sh
Your name : Dave
Your name is Dave

터미널에서 사용자 입력 숨기기

비밀번호 같은 경우 사용자의 입력을 화면에 띄우면 안된다. read 명령어는 -s 옵션을 이용해 사용자 입력을 화면에 띄우지 않는 옵션을 제공한다.

#!/bin/bash

read -p "ID : " user_id
read -sp "Password : " password

echo "ID is $id"
echo "Password is $password"

이 코드를 실행하면 다음과 같다.

$ bash test.sh
ID : dave
Password : ID is
Password is abccd

 

댓글