2. 쉘프로그램내에서 사용자 입력값 받아서 처리하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,635 조회
- 0 추천
- 목록
본문
2. 쉘프로그램내에서 사용자 입력값 받아서 처리하기
사용자 입력값 처리하는 read문 기본 사용법
쉘프로그램에서도 사용자가 키보드로 입력한 값을 받아들여서 처리하는 방법이 있습니다. 즉, read라는 쉘명령어문이 이 역할을 충분히 할 수 있습니다. 즉, read문으로 뭔가를 받아들이기 위하여 선택하라는 메시지를 출력하고 사용자가 입력한 내용을 받아서 지정한 변수에 저장하여 이를 echo문으로 출력하는 예입니다. 즉, read문에서 특정메시지를 출력하려면 -p옵션을 사용합니다.
아래의 예는 read문에서 “Select Number(1,2,3 or 4):”라는 메시지를 먼저 출력한 후에 MENU1 이라는 변수에 사용자가 입력한 내용을 받아서 저장합니다. 그리고 echo문에서 이를 출력하는 예입니다.
[root@command root]# cat read04.sh #!/bin/bash
read -p "Select Number (1,2,3 or 4):" MENU1 echo "You select number $MENU1" [root@command root]# |
read -p "Select Number (1,2,3 or 4):" MENU1
화면에 “Select Number (1,2,3 or 4):”가 먼저 출력이 된 후에 사용자의 입력을 대기합니다. 그리고 사용자가 입력한 내용을 MENU1에 저장합니다.
echo "You select number $MENU1"
MENU1에 저장된 내용을 echo문으로 출력합니다.
아래는 이 쉘프로그램을 실행한 예입니다.
[root@command root]# ./read04.sh Select Number (1,2,3 or 4):4 You select number 4 [root@command root]# |
위의 예에서 사용자는 4를 입력하였습니다. 따라서 MENU1에는 4가 저장이 되고 echo문으로 “You select number 4”라는 결과가 출력된 것입니다.
쉘프로그램내에서 read문에서 배열로 받아서 처리하기
쉘프로그램에서도 배열로 입력받아서 처리하는 것이 가능합니다. 즉, read문에서 특정 변수를 배열변수로 사용하여 입력되는 내용들이 차례대로 각 배열요소에 저장되도록 할 수 있습니다. read문에서 배열변수의 사용은 아래 규칙을 준수하셔야 합니다.
- 입력내용을 받아들일 지정된 변수를 배열변수로 사용하려면 -a옵션을 사용하셔야합니다.
- 쉘프로그램에서도 C와 마찬가지로 배열인자는 0부터 시작합니다.
- 배열변수를 출력하려면 ${변수명[인자]}와 같은 형식으로 사용하셔야 합니다.
아래의 예는 read문으로 사용자의 입력내용을 받아들일 때에 입력한 내용을 배열변수에 각각 저장하기 위하여 TEL변수를 배열변수로 사용하였습니다. 이때 TEL변수를 배열변수로 사용하기 위하여 -a옵션을 사용하였습니다. 즉, read문에서 -a옵션을 사용하면 지정된 변수는 배열변수로 인식합니다.
따라서 입력된 내용이 TEL[0], TEL[1], TEL[2]…에 순차적으로 각각 저장이 됩니다. 그리고 그 아래 echo문에서 각 배열요소들을 지정된 형식대로 출력한 것입니다. 쉘프로그램은 다음과 같습니다.
[root@command root]# cat read05.sh #!/bin/bash
echo "Input your PHONE NUMBER" read -a TEL echo "Your Phone Number : ${TEL[0]}-${TEL[1]}-${TEL[2]}" [root@command root]# |
echo "Input your PHONE NUMBER"
“Input your PHONE NUMBER”이라는 메시지를 화면으로 출력합니다.
read -a TEL
-a옵션에 의해 TEL변수가 배열변수로 사용되어 사용자가 입력하는 내용을 차례대로 TEL[0], TEL[1], TEL[2],…에 저장합니다.
echo "Your Phone Number : ${TEL[0]}-${TEL[1]}-${TEL[2]}"
입력된 내용을 echo문으로 출력한 것으로 배열변수에 저장된 내용을 출력할 때에는 ${TEL[0]}과 같은 형식으로 지정하시면 됩니다.
아래는 이 쉘프로그램을 실행한 예입니다.
[root@command root]# ./read05.sh Input your PHONE NUMBER 011 777 8888 Your Phone Number : 011-777-8888 [root@command root]# |
이 쉘프로그램을 실행하면 먼저 “Input your PHONE NUMBER”라는 메시지가 출력이 되면서 사용자의 입력을 기다리고 있습니다. 그리고 위에서 사용자가 입력한 값이 “011 777 8888”이므로 TEL이라는 배열변수에 다음과 같이 차례대로 입력됩니다. TEL[0]에 011이 저장되고 , TEL[1]에는 777이 저장되며, TEL[2]에는 8888이 차례대로 저장됩니다. 그리고 그 아래에 “Your Phone Number : 011-777-8888”라는 결과가 출력된 것입니다.
관련자료
-
이전
-
다음