2016-08-10 4 views
1

새로운 사용자를위한 가상 머신 설정 기능을 수행하기 위해 루프를 만들었습니다. 호스트를 추가하거나 IP 주소를 추가하는 등의 작업을 수행합니다. 그러나 '취소' 버튼을 클릭하면 루프의 다음 whiptail 요소로 이동합니다. Cancel을 대신 선택하면 루프를 취소하고 기본 메뉴 창으로 되돌아 가도록 설정할 수 있습니까? enter image description hereWhiptail inputbox 취소가 작동하지 않습니다.

I가 전송있어 ... enter image description here

그리고 첫 번째 입력 상자에 '취소'를 클릭하면 경우 : 여기

while true 
do 

OPTION=$(whiptail --title "Configuration Menu" --menu "Choose an option" 20 78 10 \ 
"1"  "Show current configuration." \ 
"2"  "Setup Wizard." \ 
... 
"0"  "EXIT" 3>&1 1>&2 2>&3) 

exitstatus=$? 

case "$OPTION" in 
... 
2) 
    # Setup hostname 
    HOSTNAME=$(whiptail --inputbox "Hostname" 8 78 `hostname` --title "Serial Number" 3>&1 1>&2 2>&3) 
    ... 
    # IP address configuration 
    IP_CONFIG=$(whiptail --title "Network Configuration" --radiolist "Choose a configuration option" 20 78 10 \ 
     "DHCP" "Use Dynamic Host Protocol" ON \ 
     "STATIC" "Configure Static IP" OFF 3>&1 1>&2 2>&3) 
    ... 
;; 
esac 

은 메인 메뉴의 모습이다 다음 whiptail 요소를 사용하지 마십시오. enter image description here

답변

0

루프를 종료하는 break을 사용하십시오. whiptail 반환 <Cancel> 선택에 대한 1, 그래서 시험이에 대한, 그리고 break 그렇다면이 :

확인
OPTION=$(whiptail --title "Configuration Menu" --menu "Choose an option" 20 78 10 \ 
"1"  "Show current configuration." \ 
"2"  "Setup Wizard." \ 
... 
"0"  "EXIT" 3>&1 1>&2 2>&3) 

exitstatus=$? 

[[ "$exitstatus" = 1 ]] && break; 
+0

내가 각각의 경우 옵션에서 직접 초기'$ exitstatus' 변수 아래에있는'$ exitstatus ='테스트를 배치해야합니다 나는 그것을 자신의 exitstatus = 0 테스트에서 각각의 경우 옵션을 포장했다? – Godzilla74

+0

'$ exitstatus' 밑에해야합니다. –

+0

아니요, 메인 메뉴로 돌아가는 대신 다음 창으로 계속 진행합니다. – Godzilla74

1

, 그것을 알아 냈다.

2) 
     # Setup serial number 
     SERIAL=$(whiptail --inputbox "Serial Number" 8 78 `hostname` --title "Serial Number" 3>&1 1>&2 2>&3) 
     exitstatus=$? 
     if [ $exitstatus = 0 ]; then 
     ... 
     else 
     break 
     fi 
     ;; 
...