쉘스크립트 초보자 질문 드립니다.
글쓴이: gorogong / 작성시간: 수, 2022/05/25 - 10:50오전
#!/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"
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" ;;
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위와 같은 스크립트 실행 시 결과 값
1) 1, Check IP 2) 2, IP List 3) 3, Exit <code> 이렇게 선택 숫자가 중복이 되어 나옵니다. 중복 제거를 위해 case문을 수정해서 재시도 해봤지만.. 그러면 스크립트가 제대로 동작을 못하더라구요.. 혹시 좋은 방법이 있을까요?.. 질문 봐주셔서 감사합니다.
Forums:


select 명령이 번호를 알아서 붙여주므로,
select 명령이 번호를 알아서 붙여주므로, 메뉴 항목마다 넣으신 번호를 빼고 메뉴명으로 직접 매칭하면 될 것 같네요.
아.. 자동 부여군요! 감사합니다 원하는 대로 작동
아.. 자동 부여군요! 감사합니다 원하는 대로 작동 합니다!
댓글 달기