ysuekkom의 IT study note

[linux 기초] 명령어 실습편 - 초간단 쉘 스크립트 작성IIII -대화식 쉘스크립트 구성 본문

OS/linux

[linux 기초] 명령어 실습편 - 초간단 쉘 스크립트 작성IIII -대화식 쉘스크립트 구성

ysuekkom 2022. 10. 15. 00:53

[linux 기초] 명령어 실습편 - 초간단 쉘 스크립트 작성IIII -대화식 쉘스크립트 구성

개인 공부를 위한 기록용으로 일부 과거 자료 이전

 

###간단  스크립트
 -조건문/반복문
 -함수/배열
 -리다이렉션의 활용
-대화식구성/메뉴구성
    사용자 입력 처리 쉘 스크립트 작성
    -반복/조건문을 이용한 정해진 숫자 맞추기 게임
    -시스템 상태 조회 쉘 스크립트 작성 
     

 

리눅스 명령어 기본/실습편에서 익힌 기본적인 명령어를 통해 기초 대화식 쉘 스크립트 작성 실습을 해보자

입출력을 입력받고, 해당 내용을 GUI로 출력하는 실습까지 본 포스팅에서 다룰 예정이다!

 

###대화식 쉘 스크립트

 

- 스크립트 실행 사용자에게 입력을 받은 숫자/문자를 처리함

 

<입력대기/출력 실습>

>vi read_test.sh

>read -p 옵션 사용 --> 입력하는 문자 그대로 출력

 

>vi read_test.sh

>read -sp 옵션 사용 --> s : secret mode

>문자 입력 , 입력한 문자 숨겨줌

 

 


<정해진 숫자맞추기 게임>

 

>> 1. GOAL="$((RANDOM% 100+1))" ; echo "${GOAL}"

>chmod 700 num_test.sh

 

 


###시스템 상태 조회 메뉴가 있는 쉘 스크립트

-dialog --옵션명 옵션에 필요한 변수

 

>vi menu.sh

메뉴1 선택 uptime

메뉴2 선택 df -h

메뉴3 선택 free -m

메뉴4 선택 pstree

메뉴5 선택 , 서버 입력받아 해당 서버에 ssh 접속하는 메뉴 만들기

 

Clear 출력화면 지워 다음 == 함수로 작성

Txt 메뉴를 출력하기. == menu() 함수로 작성

메뉴 선택 실행 이후, 아무키나 입력 다음으로 넘어갈 있도록하는 press any key to continue.. == press_key() 함수로 작성

User 입력을 기다리는 while true 반복/무한대기

 

<실습>

>vi menu.sh

 

 

>chmod 700 menu.sh

>./menu.sh

>>5 선택 , 접속할 서버 입력 받기 위해 대기

>> 입력 받고, sleep 1 --> 1 기다리고 "${SVR} server login…" 출력한 다음, 서버 접속 시도(기초편에서는 서버 접속 안되서 종료)

>> 6 선택 , 메뉴 종료 --> exit 0 ;; --> 정상 종료

 


<위 실습을 GUI로 만들기>

-dialog --옵션명 옵션에 필요한 변수

Dialog >선택한 메뉴를 파일로 저장함, 1 선택하면 파일에 1 데이터가 저장되고 파일에서 번호를 읽어와서

케이스문에 대입하는 처리 방식

 

 

 

 

>>에러 빨간색 확인

>menu 함수 부분을 dialog 사용하여 GUI 만들기

출력결과

>번호 선택 결과가 select파일에 담기지만 2번의 disk state 불러오지 못함

>>수정 필요: 메뉴 넘버를 받아서 select 파일에 넘겼는데, 번호를 받아오는 변수 선언을 안해줌

 

>vi menu.sh

#!/bin/bash

:wq!

>./menu.sh

>커서 옮겨서 3 선택 ,

>memory state 출력, press any key to continue…

>function press_key {

 echo

 read -n1 -rsp "Press any key to continue…"

 echo

 echo

}

>>read 입력대기, 입력받기

 -n1 : 1 입력 받기

 -r : 백슬래시 기호를 문자로 받아들이기(아무문자나 입력 넘어가야하기 때문에)

 -p: 다음 문자열 출력해주기 "Press any key to continue…"

 

>6 선택 exit menu

>case , 6) exit 0 ;;(정상종료 명령어)

>종료 cat select 확인 == 6 남아있음