쉘 스크립트를 작성하다보면 사용자의 입력을 받아야 하는 경우가 있다. 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
댓글