2011-07-31 34 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