[LUGOS] goto in bash

Metod Kozelj metod.kozelj at lugos.si
Wed Oct 22 14:29:54 CEST 2003


Howdy!

Gregor Gorjanc wrote:

>Rabim za nekaj podobnega temu
>    
>    echo " Input (a/b/c)? "
>    read TERM
>    if [ "${TERM}" = "a" ]; then
>       "do something"
>    elif [ "${TERM}" = "b" ]; then
>       "do something"
>       goto "vrstica 10"
>    else
>       "do something"
>    fi


Še vedno ne vem, kaj je tako posebnega na tej "vrstica 10". Kam skoči?
Na vrstico z "echo"? Mislim si, da bi ti tale 'goto' rad uporabljal za
flow-control. Za te potrebe vedno lahko uporabiš konstrukte 'while ...
do; ....; done'. Če bi ti torej rad naredil skripto, ki bi v primeru
vnosa 'b' ponovno zahtevala vnos, sicer pa ne, lahko to narediš takole:

REPEAT=true
while ${REPEAT}; do
    echo " Input (a/b/c)? "
    read TERM
    REPEAT=false
    if [ "${TERM}" = "a" ]; then
        "do something"
    elif [ "${TERM}" = "b" ]; then
        "do something"
        REPEAT=true
    else
        "do something"
    fi
done

Sicer bi se jaz tvojega primera lotil s 'case' namesto z if/elif/else.

-- 
Peace!
   Mkx

---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'




More information about the lugos-list mailing list