Pagina1 van 1

Bash Script – Press Any Key To Continue

Bash Script – Press Any Key To Continue
   0

In dit artikel een korte beschrijving hoe ik “Press Any Key to Continue” (Druk een toets om verder te gaan) in een Bash script (Linux/MacOS X) heb geïmplementeerd.

Ik werk niet iedere dag met scripts in Bash (Terminal of Shell) dus ik gebruik dit meteen als referentie voor mezelf. In mijn geval wilde ik een script hebben welke Lazarus Pascal update van SVN, en vervolgens het hele zaakje gaat compileren en linken. Echter; ik wilde eerst zien wat er geüpdate was vanuit SVN door een eenvoudige “Press Any Key To Continue” in het script, zodat ik eerst kon lezen wat er nieuw was voor er vanalles over het scherm zou flitsen.

Omdat ik het e.e.a. moest uitzoeken om dit te vinden, leek het me handig dit in een minuscuul artikeltje te proppen. Dan hebben anderen er ook wat aan.




Bash Press Key to continue

In bepaalde situatie, wil men misschien graag een “Press any key to continue” optie in een script, zodat de gebruiker een moment de tijd heeft om eventuele tekst door te lezen voor het script verder gaat. In mijn situatie was dit een script dat ik gemaakt had om een SVN update van Lazarus Pascal uit te voeren, en vervolgens een :make” uit te voeren. Voordat “make” echter start, zou ik graag willen zien wat er nu geüpdate is vanuit SVN zodat ik een idee heb wat ik mag verwachten als “make” klaar is met compileren en linken. Uiteraard kan de hier beschreven methode voor allerlei scripts gebruikt worden, ook al hebben ze niets met Lazarus Pascal van doen.

In dit geval gebruik ik het “read” commando (man page), wat beschikbaar is onder Linux en MacOS X. Omdat de “man page” onder MacOS wat beperkt is, adviseer ik de man page link te bezoeken – mocht je meer willen weten.

De eenvoudigste methode die ik tot nu toe heb is:


read -n 1 -r -s -p $'Press enter to continue...\n'

Merk wel op dat dit eigenlijk niet voor “alle” toetsen werkt. Toetsen zoals Shift, Alt, Ctrl, Windows, Alt-menu, en Command (  ) werken niet met deze methode. Dus als dat een probleem is dan zul je verder moeten kijken naar een andere optie.

Parameters
Parameter Doel
-n 1 Kom terug naar het script na dat een karakter is aangeslagen (en daarom werken Alt, Shift enz. dus niet omdat dit geen karakters zijn).
-r Sta backslashes voor escape karakters niet toe (zodat dit ook met het indrukken van de backslash werkt)
-s Geef, wat getypt is, niet weer.
-p $”Press any key to continue\n” Geef een prompt weer die zegt “Press any key to continue” (\n = nieuwe regel).
Het Dollar symbool ($) moet voor de tekst met aanhalingstekens staan zodat “\n” voor een nieuwe regel werkt.

Time Out Toevoegen

Misschien handig, als je een script automatisch door wilt laten gaan, na een zogenaamde time-out. Dus als de gebruiker na een x aantal seconden nog niets heeft gedaan, gaat het script automatisch verder (5 seconden in onderstaand voorbeeld). Je kunt dit zo doen:


read -t 5 -n 1 -s -r -p "Press any key to continue"

De parameter “-t 5 ” zet de timeout op 5 seconden – je kunt dit naar wens aanpassen natuurlijk.

Varianten

Press ENTER to continue (Druk op Enter om door te gaan)


1
read -r -s -p $'Press enter to continue...'

Press Escape to continue (Druk op Escape om door te gaan)


read -r -s -p $'Press escape to continue...\n' -d $'\e'

Hier bepaalde de parameter -d $'\e' dat de Escape toets (\e) het “laatste” karakter is (net zoiets als de ENTER toets zeg maar). Let er wel op dat de gebruiker dus naar hartelust andere toetsen kan indrukken, ook al doen die niets tot de gebruiker op Escape drukt.

 Merk op : De “Press any key to continue” methode werkt ook met de Escape toets en is misschien een betere optie tenzij Escape echt noodzakelijk is.

Donatie opties


Donaties zijn niet verplicht maar worden wel zeer gewaardeerd. Donaties worden gebruikt voor de hosting kosten van onze website, en voor de aankoop van zaken die we in onze projecten gebruiken. Hoe klein de donatie ook is; we zijn er erg blij mee!

Reacties


Er zijn nog geen reacties geplaatst.
Je kunt jouw eigen opmerkingen plaatsen m.b.v. dit formulier, of een reactie op een bestaande opmerking plaatsen door op de "Beantwoorden" knop te klikken.



Jouw Opmerking ...

Plaats hier geen lange bestanden (zoals source codes, log files of config files). Gebruik hiervoor het Forum.

Delen:
*
*
Laat me per email weten als er nieuwe reacties zijn.
       Je kunt jouw RSS reader gebruiken om reacties te volgen.


Tweaking4All gebruikt de gratis Gravatar dienst voor Avatar weergave.
Tweaking4All zal nooit jouw email adres met anderen delen.