inflearn logo
강의

Course

Instructor

Linux Shell Script Master

select in case문 질문

231

gorogong

3 asked

0

#!/bin/bash
##v.2.0

export IP1="0"
export IP2="0"
export IP3="0"
export DATE=$(date +"%F")
PS3="Select the option "

select char in "1, Check IP" "2, IP List" "3, Exit" #"4"#
do
   case $char in

   1*)  read -p "Enter IP xxx.xxx.xxx. > " -t 20 IP1
        read -p "Enter start IP xxx > " -t 20 IP2
        read -p "Enter last IP xxx > " -t 20  IP3

        echo -e "\033[32;1m"IP Checking!"\033[0m"

        while [[ $IP2 -lt $IP3 ]]; do

        ping -c 1 -w 1 $IP1$IP2 > /dev/null

        if [[ $? == 0 ]]; then
         echo $IP1$IP2 is In-use. >> /tmp/ip_list_$DATE ;
        else
         echo $IP1$IP2 is Dead or Available. >> /tmp/ip_list_$DATE ;
        fi
        IP2=$(($IP2+1))
        done
        echo -e "\033[31;1m"IP Check well done! please verify IP"\033[0m" ;;

   2*)  grep -q  Avail* 2> /dev/null < /tmp/ip_list_$DATE
        if [[ $? == 0 ]]; then
          grep -r --color=always Available /tmp/ip_list_$DATE | sort -u
        else
          echo -e "\033[31;3m"There is no available IP"\033[0m"
        fi  ;;

   3*)  echo "Good bye"; exit 0 ;;

   #4*)  echo "You choose not yet menu it will be add section coming soon asap" ;;
   *)   echo "!!Error select correctly number!!"
   esac


done
 
위와 같이 실행시 결과 값
 
[root@hlldvc ddrec]# ./ipcheck.sh
1) 1, Check IP
2) 2, IP List
3) 3, Exit
Select the option
 
이와 같이 1)1,  숫자가 중복이 되는 현상이 발생합니다.
미관상 좋지 않아보여 중복 제거를 위해 여러 방법을 시도해 보는중이지만 잘 되지 않습니다. 
혹시 다른 방법이 있을까요..?
 

쉘스크립트 linux shell-script

Answer 1

0

guileschool

안녕하세요. gorogong 님

아래처럼 하면 되지않을까요?

select char in "Check IP" "IP List" "Exit" #"4"#

원하시는 답변이 아닐 경우 다시 질문올려주세요.

0

gorogong

답변 주신대로 변경 이후 

   "Check IP")  read -p "Enter IP xxx.xxx.xxx. > " -t 20 IP1

        read -p "Enter start IP xxx > " -t 20 IP2

        read -p "Enter last IP xxx > " -t 20  IP3

 

        echo -e "\033[32;1m"IP Checking!"\033[0m"

        echo -e " " > /tmp/ip_list_$DATE > /dev/null

 

        while [[ $IP2 -lt $IP3 ]]; do

 

        ping -c 1 -w 1 $IP1$IP2 > /dev/null

 

        if [[ $? == 0 ]]; then

         echo $IP1$IP2 is In-use. >> /tmp/ip_list_$DATE ;

        else

         echo $IP1$IP2 is Dead or Available. >> /tmp/ip_list_$DATE ;

        fi

        IP2=$(($IP2+1))

        done

        echo -e "\033[31;1m"IP Check well done! please verify IP"\033[0m" ;;

 

   "IP List")  grep -q  Avail* 2> /dev/null < /tmp/ip_list_$DATE

        if [[ $? == 0 ]]; then

          grep -r --color=always Available /tmp/ip_list_$DATE

        else

          echo -e "\033[31;3m"There is no available IP"\033[0m"

        fi  ;;

 

   "Exit")  echo "Good bye"; exit 0 ;;

 

case 문 앞을 변경하니 정상적으로 작동합니다 감사합니다!

59회차 학습 미작동

0

67

2

BASH_REMATCH 변수가 어디서 나온거죠?

1

916

1

${object%%:*}, ${object#*:}는 어떤 뜻인가요

2

397

1

./euid.sh

2

398

1

touch 'Gone with the wind.mp3' 입력 결과가 다릅니다

1

364

1

스크립트에서 %는 무엇을 의미하나요?

1

520

1

하드 링크, 심볼릭 링크

1

691

2

[..]와 테스트 강의에서

1

389

1

하드 링크, 심볼릭 링크

0

631

1

변수명이 출력되지 않습니다.

1

286

1

변수명 출력이 되지 않습니다.

0

345

1

crontab 질문이 있습니다.

1

224

2

(..)_(..) 와 BASH_REMATCH

1

748

1

^[.+] 정규표현식이 RegExr 를 나타내는게 맞나요?

1

390

2

실습자료를 다운받은 다음에 어떻게 해야 하나요?

0

437

3

sudo cp helloworld.sh /usr/bin 명령어 질문

1

604

1

read -p 명령어가 동작하지 않습니다.

2

351

1

wc 명령어에 -L 옵션이 동작하지 않습니다.

1

437

1

book이 변수가 아니라 파일인가요?

1

357

1

sed 관련 질문

1

641

2

파일접근권한 강의

1

145

1

[] 결과

2

212

1

# (주석) 관련 질문 드립니다.

1

165

1

bash 타이핑 정보 읽어들이기

1

211

1