bash script - 사용자에게 메뉴 선택하게 하기(while, if)



bash script로 여러가지 작업을 자동화 할때, 여러가지 경우의 수를 커버하기 위해 때때로 사용자에게 선택지를 제공할 필요가 있다.

아래는 그 예시이다.

예시상황

1. 여러가지 uninstall 작업을 스크립트로 만들었다.

2. license manager 란 directory는 지워야할 때도 있고 남겨야 할 때도 있다.

3. 스크립트 마지막에 2번내용을 사용자에게 어떡할지 물어보고 대답에 따라 삭제명령어를 실행할지 말지 결정한다.

스크립트 조건

1. 사용자에게 license manager directory를 지울건지 말건지 물어봐야한다.

2. y 를 입력받으면 license manager directory를 지운다.

3. n 을 입력받으면 그만 물어보고 다음 동작을 실행한다.

4. y 또는 n 이 아닌 다른 문자를 입력받으면 1번 질문을 다시 보여준다.

활용 구문

1. read 이용해서 사용자에게 입력을 받는다.

2. while문 이용 무한 루프를 만들어서, license manager 삭제여부를 무한 반복해서 질문한다.

3. if문을 이용해서 y, n, 기타 문자를 입력받았을 때 다른 작업을 하도록 분기를 만든다.

4. break를 이용해서 무한 루프를 빠져나가는데 활용한다.

+. else 다음 세미콜론 : 은 아무것도 하지 않는 다는 뜻

스크립트 내용


#!/bin/bash

echo "Previous actions have been done. Start loops for license manager directory"

while true
do
    read -p "Do you want to delete license manager? [y/n] " value
    if [ $value = "y" ]
    then
        rm -rf /opt/jihoon/license_manager
        echo "license manger has been deleted."
	break
    elif [ $value = "n" ]
    then
        echo "license manager won't be deleted."
	break
    else
    :
    fi
done

echo "Do other stuff.."

참고

read : https://linuxize.com/post/bash-read/

if 문 : http://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/testconstructs.html

loop : http://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/loops1.html

댓글 쓰기

0 댓글