본문 바로가기

Server/Linux

[Linux] 쉘 스크립트 사용하기(사용자 입력 read)

728x90
반응형
관련포스팅

2024.07.13 - [Linux] - [Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF)

 

[Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF)

회사 업무 중 모듈 제작 작업 과정에서 반복된 커맨드를 작성하다 보니 그냥 스크립트 하나 만들어서 동작하는 게 효율적일 거란 생각이 들어서 생애 처음으로 쉘 스크립트를 작성해 보았다. 쉘

rlawo32.tistory.com

 

2024.07.15 - [Linux] - [Linux] 쉘 스크립트 사용하기(반복문 for, while)

 

[Linux] 쉘 스크립트 사용하기(반복문 for, while)

관련 포스팅2024.07.13 - [Linux] - [Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF) (1) [Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF) (1)회사 업무 중 모듈 제작 작업 과정에서 반복된 커맨드를

rlawo32.tistory.com

 

 

 

 

 

 

1. read 명령어

read 명령어는 쉘 스크립트 실행 시 입력 값을 받아야 할 때 주로 사용한다.

기본 사용 방법은 아래와 같다.

# test.sh

read -p "당신의 나이를 입력해주세요. : " age

echo $age

# 출력
당신의 나이를 입력해주세요. : 28
28

 

스크립트 실행 시 read 명령에 정의한 문자열이 출력되고 값을 입력하면 age 변수로 들어가게 된다.

 

 

 

변수 선언을 안하고 read 명령어를 사용할 시 $REPLY를 사용하여 입력 값을 확인할 수 있다.

# test.sh

read -p "당신의 나이를 입력해주세요. : " 

echo $REPLY

# 출력
당신의 나이를 입력해주세요. : 28
28

 

 

 

여러 개의 변수를 선언하여 사용할 수도 있다. 입력 시 공백(space bar)을 통해 구분을 한다.

# test.sh

read -p "당신의 이름을 입력해주세요. : " first second third

echo -n $first
echo -n $second
echo $third

# 출력
당신의 이름을 입력해주세요. : 홍 길 동
홍 길 동

 

 

 

특정 값이 입력이 될 때까지 반복 read를 구현하고 싶다면 아래와 같이 작성하면 된다.

0을 입력하면 END 문자와 함께 입력 명령이 종료된다.

# test.sh

while read -p "숫자를 입력해주세요. : " A
do
	if [ $A -eq 0 ]; then
		echo "END"
		break
	fi
	echo $A
done

# 출력
숫자를 입력해주세요. : 1
1
숫자를 입력해주세요. : 2
2
숫자를 입력해주세요. : 0
END

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

2. read 옵션

read 옵션은 여러가지가 있다. 그중 자주 사용하는 것들을 정리해 보았다.

-p 프롬프트 문자열 출력 -a 입력 시 배열 형태로 반환
-s 입력 시 입력값 숨김 -r \ (백슬래시) 입력 가능
-t {시간} 입력 받을 시간을 지정 -n {길이} 길이만큼 입력 시 입력 반환

 

 

 

-p 옵션은 입력 값을 받을 때 프롬프트 문자열을 출력해 준다.

# test.sh

read -p "당신의 이름을 입력해주세요. : " name

echo $name

# 출력
당신의 이름을 입력해주세요. : 홍길동
홍길동

 

 

 

-a 옵션은 입력 값을 배열 형태로 사용할 수 있게 해 준다. 입력 시 공백(space bar)을 통해 구분을 한다.

# test.sh

read -p "당신의 이름을 입력해주세요. : " -a name

echo ${name[0]}
echo ${name[1]}
echo ${name[2]}
echo ${name[3]} # 해당 인덱스에 값이 없는 경우 빈 문자열로 출력
echo ${name[@]} # 배열에 있는 값 모두 출력

# 출력
당신의 이름을 입력해주세요. : 홍 길 동
홍
길
동

홍 길 동

 

 

 

-s 옵션은 입력 값을 입력할 때 값을 숨겨준다. 비밀번호 기능을 구현할 때 사용하면 좋은 옵션이다.

# test.sh

read -p "비밀번호를 입력해주세요. : " -s password

# 출력
비밀번호를 입력해주세요. :    # 입력할 때 입력 값이 보이지 않는다.

 

 

 

-r 옵션은 ' \ ' (백슬래시) 를 입력할 수 있게 해 준다.

# test.sh

read -p "문자열을 입력해주세요. : " -r A

echo $A

# 출력
문자열을 입력해주세요. : \HELLO\
\HELLO\

 

 

 

-t 옵션은 입력 제한시간을 지정해 준다. 지정한 숫자는 초단위이며, 제한시간이 지나면 자동 입력 종료가 된다.

# test.sh

read -p "문자열을 입력해주세요. : " -n 5 A     # 5초 뒤에 자동 입력 종료된다.

echo $A

# 출력
문자열을 입력해주세요. : hello 

# 제한시간 안에 입력 후 Enter 키를 누르지 않으면 종료된다.

 



-n 옵션은 입력 제한길이를 지정해준다. 지정한 길이만큼 입력하면 입력 값이 자동 반환된다.

# test.sh

read -p "문자열을 입력해주세요. : " -n 3 A

echo ""
echo $A

# 출력
문자열을 입력해주세요. : HEL   # HELLO를 입력하려 했지만 입력 제한길이가 3이기에 자동 반환되었다.
HEL

 

 

 

 

 

 

 

 

 

728x90
반응형