2011-07-31 41 views

回答

2

沒有標籤或轉到。但是,你可以通過一個數字來退出深層嵌套循環的「斷裂」內置:突破200退出兩個層次,打破3,退出三個層面等

+0

爽!謝啦。我試圖讀取用戶輸入的yes或no值,如果他們輸入no,我想返回到相同case語句的原始echo/input(即輸入您的姓名,$ user是正確的(Y/N )?)。但我認爲我可能正在構建這個錯誤......無論哪種方式,我很感激它!再次感謝。 – Justin

3

雖然它總是幫助張貼一個簡單的例子您的問題(但涵蓋了你所期望的所有意外事故),給您的評論回覆標記爲已讀,你可以用輸入到while循環的提示,像

while ${keepTrying:-true} ; do 
    echo "enter Yes or No" 
    read yOrN 
    case "${yOrN} in 
    [Yy]*) 
     # do something 
     keepTrying=false 
    ;; 
    [Nn]*) 
     # do something else 
     keepTrying=false 
    ;; 
    *) 
     echo "bad input" 
    ;; 
    esac 
done 

# continue with script 
# .... 

而且,我同意馬克,沒有標籤或在ksh gotos。

我希望這會有所幫助。

+0

謝謝,那正是我需要的!欣賞它! – Justin

+0

整潔。無論你使用ksh多久,我仍然學到新的東西;你的while $ {keepTrying:-true}結構非常好 - 謝謝! –

+0

tnx,是的,我實際上使用這個構造適當!!祝你們好運! – shellter

0

有一個bash轉到實施,如果你要適應它的ksh(我至今沒有)

#!/bin/bash 

function gowto 
{ 
    label=$1 
    # works in Linux bash, but barks in ksh 
    cmd=$(sed -n "/#$label:/{:a;n;p;ba};" $0 | grep -v ':$') 
    # 
    eval "$cmd" 
    exit 
} 

echo step 1 

gowto skip 

echo To be skippped 

#skip: 

echo Step 2