break(1p)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök

PROLOG

Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig (se motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kanske gränssnittet inte är implementerat på Linux.

NAMN

break — avsluta en for-, while- eller until-slinga

SYNOPSIS

break [n]

BESKRIVNING

Om n anges ska verktyget break avsluta den n:te omslutande for-, while- eller until-slingan. Om n inte anges ska break bete sig som om n hade angetts som 1. Exekveringen ska fortsätta med kommandot omedelbart efter den avslutade slingan. Värdet på n är ett positivt decimalt heltal. Om n är större än antalet omslutande slingor ska den yttersta omslutande slingan avslutas. Om det inte finns någon omslutande slinga är beteendet ospecificerat.

En slinga ska omsluta ett break- eller continue-kommando om slingan lexikalt omsluter kommandot. En slinga lexikalt omsluter ett break- eller continue-kommando om kommandot är:

  • exekverat i samma exekveringsmiljö (se Section 2.12,
 Shell Execution Environment) som sammansatt-listan i slingans
 do-grupp (se Section 2.10.2, Shell Grammar Rules), och
  • innehållet i en sammansatt-lista associerad med slingan
 (antingen i sammansatt-listan i slingans do-grupp eller, om slingan
 är en while- eller until-slinga, i sammansatt-listan som följer
 efter det reserverade ordet while eller until), och
  • inte i kroppen för en funktion vars funktionsdefinitionskommando
 (se Section 2.9.5, Function Definition Command) finns i en
 sammansatt-lista associerad med slingan.

Om n är större än antalet lexikalt omslutande slingor och det finns en icke-lexikalt omslutande slinga som pågår i samma exekveringsmiljö som kommandot break eller continue, är det ospecificerat om den slingan omsluter kommandot.

FLAGGOR

Inga.

OPERANDER

Se BESKRIVNING.

STDIN

Används inte.

INDATAFILER

Inga.

MILJÖVARIABLER

Inga.

ASYNKRONA HÄNDELSER

Standard.

STDOUT

Används inte.

STDERR

Standard error ska endast användas för diagnostiska meddelanden.

UTDATAFILER

Inga.

UTVIDGAD BESKRIVNING

Ingen.

AVSLUTNINGSSTATUS

0
: Framgångsrikt avslut.
>0
: Värdet n var inte ett teckenlöst decimalt heltal större än eller lika med 1.

KONSEKVENSER VID FEL

Standard.

Följande avsnitt är informativa.

ANVÄNDNING

Ingen.

EXEMPEL

for i in *
do
    if test -d "$i"
    then break
    fi
done

Resultatet av att köra följande exempel är ospecificerat: det finns två slingor som pågår när kommandot break körs, och de är i samma exekveringsmiljö, men ingen av slingorna omsluter kommandot break lexikalt. (Det finns inte heller några slingor som lexikalt omsluter kommandona continue.)

foo() {
    for j in 1 2; do
        echo 'break 2' >/tmp/do_break
        echo "  sourcing /tmp/do_break ($j)..."
        # beteendet för break från körning av följande kommando
        # resulterar i ospecificerat beteende:
        . /tmp/do_break

        do_continue() { continue 2; }
        echo "  running do_continue ($j)..."
        # beteendet för continue i följande funktionsanrop
        # resulterar i ospecificerat beteende (om exekveringen når
        # denna punkt):
        do_continue

        trap 'continue 2' USR1
        echo "  sending SIGUSR1 to self ($j)..."
        # beteendet för continue i trap som anropas från följande
        # signal resulterar i ospecificerat beteende (om
        # exekveringen når denna punkt):
        kill -s USR1 $$
        sleep 1
    done
}
for i in 1 2; do
    echo "running foo ($i)..."
    foo
done

BAKGRUND

I tidiga förslag övervägdes att utöka syntaxen för break och continue så att de kunde hänvisa till en etikett associerad med den aktuella slingan som ett bättre alternativ till metoden med n. Dock reserverar denna del av POSIX.1-2017 namnutrymmet för kommandonamn som slutar med ett kolon. Det förutses att en framtida implementation skulle kunna dra nytta av detta och erbjuda något i stil med:

outofloop: for i in a b c d e
do
    for j in 0 1 2 3 4 5 6 7 8 9
    do
        if test -r "${i}${j}"
        then break outofloop
        fi
    done
done

och att detta kan standardiseras efter att man fått erfarenhet av implementationer.

FRAMTIDA UTVECKLING

Ingen.

SE ÄVEN

Section 2.14, Special Built-In Utilities

COPYRIGHT

Delar av denna text återges och reproduceras i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute of Electrical and Electronics Engineers, Inc och The Open Group. Vid varje avvikelse mellan denna version och den ursprungliga standarden från IEEE och The Open Group är originalstandarden från IEEE och The Open Group det gällande referensdokumentet. Originalstandarden kan erhållas online på http://www.opengroup.org/unix/online.html .

Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har sannolikt introducerats under konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se https://www.kernel.org/doc/man-pages/reporting_bugs.html .

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/break.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.