Toon posts:

[AIX/KSH] do-while loop in scripts

Pagina: 1
Acties:

  • Aragnut
  • Registratie: oktober 2009
  • Laatst online: 22:45
In C/C++ is het mogelijk om do-while loopjes te maken. Hierbij wordt de code in de loop minimaal 1 maal uitgevoerd, en aan het einde wordt de conditie gecontroleerd. In ksh zijn er wel while, until en for loops, maar deze checken allemaal aan het begin hun conditie voor het uitvoeren. Van wat ik heb kunnen vinden, zijn er geen soortgelijke loops mogelijk bij shell (ksh) scripting.

Los van het dupliceren van de code binnen de loop naar voor de loop, wat zijn (jullie) creatieve oplossingen hiervoor?

  • Big Mama
  • Registratie: mei 2000
  • Laatst online: 21:26
#!/bin/ksh
NOGEENKEER="ja"

while [ "NOGEENKEER" = "ja" ]
do
# Doe iets leuks
NOGEENKEER="nee"
done

Computers follow your orders, not your intentions.


  • Aragnut
  • Registratie: oktober 2009
  • Laatst online: 22:45
Big Mama schreef op woensdag 29 september 2010 @ 13:37:

<muggenzift modus>
Geeft dat niet een enkele iteratie? daar hoort toch nog bij:
#!/bin/ksh
NOGEENKEER="ja"

while [ <wat-je-maar-wil-checken> && "NOGEENKEER" = "ja" ]
do
# Doe iets leuks
NOGEENKEER="nee"
done
/muggenzift modus
Geeft dat niet een enkele iteratie? daar hoort toch nog bij (uiteraard met de correcte [ of ( ):

while [ <wat-je-maar-wil-checken> && "NOGEENKEER" = "ja" ]

</muggenzift modus>

Dat scheelt inderdaad al t.o.v. 2 maal dezelfde code, wat de zaak wel overzichtelijker maakt

  • Kees
  • Registratie: juni 1999
  • Laatst online: 21:14

Kees

Serveradmin / BOFH / DoC
Niet als je die boolean laat afhangen van je wil checken. In psuedocode:

do {
bla
} while ( expression=true)

naar:
tmp-expression = true
while (tmp-expression = true) {
bla
tmp-expression=expression
}

Dat zou dezelfde functionaliteit opleveren.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • sam.vimes
  • Registratie: januari 2007
  • Laatst online: 01-09 18:23
De kortste klap is denk ik:
code:
1
2
3
4
5
while :
do
  blabla
  expression || break
done


Dit gaat door zolang expression true is (do..while). Als je wilt stoppen als expression true is (repeat..until), de || vervangen door &&.

[Voor 42% gewijzigd door sam.vimes op 05-10-2010 08:29. Reden: end-clause uitgebreid]



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee