Bash várjon a gombnyomásra

Bash Wait Keypress



A `read` parancs segítségével a felhasználó bevitelt végez egy bash szkriptben. A bash szkriptben különböző típusú opciókat használhatunk a read paranccsal. Néha úgy kell megírnunk a szkriptet, hogy a szkript addig fut, amíg le nem nyom egy adott billentyűt, vagy az adott szkript az adott kulcs alapján nem fog futni, vagy a program megvárja a megadott ideig, amíg bármelyik gombot le nem nyomja. Ebben az oktatóanyagban különböző példák segítségével bemutatjuk, hogyan írhat bash -szkriptet, hogy várjon egy bizonyos kulcsra vagy kulcsra bizonyos feladatokhoz.

1. példa:

Hozzon létre egy bash fájlt a következő szkripttel. Amikor futtatja a szkriptet, addig folytatódik, amíg a felhasználó le nem nyom egy gombot. A szkript 3 másodpercenként megvárja a felhasználó bevitelét, és ha a felhasználó nem nyom meg egyetlen gombot sem, akkor kinyomtatja az üzenetet, várja a gombnyomást .







#!/bin/bash
kidobta 'Nyomjon meg egy gombot a folytatáshoz'
míg [ igaz ];tedd
olvas -t 3 -n 1
ha [ $?=0 ];azután
kijárat;
más
kidobta 'várja a billentyű lenyomását'
lenni
Kész

Futtassa a szkriptet.



$bashkey1.sh

Kimenet:







2. példa:

Hozzon létre egy bash fájlt a következő szkripttel. Ebben a példában egy végtelen ciklus használatos, amely akkor fejeződik be, amikor a felhasználó megnyomja a „q” gombot. Ha a felhasználó bármelyik gombot megnyomja „q” nélkül, akkor a számlálóváltozó értéke 1 -gyel nő, és kinyomtatja az értéket.

#!/bin/bash
kidobta 'Kilépéshez nyomja meg a' q 'gombot
számol=0
míg:;tedd
olvas -n 1nak nek<&1
ha [[ $ k= q]];azután
printf ' nKilépés a programból n'
szünet
más
((számol=$ gróf+1))
printf ' nIsmételje meg$ grófalkalommal n'
kidobta 'Kilépéshez nyomja meg a' q 'gombot
lenni
Kész

Futtassa a szkriptet.



$bashkey2.sh

Kimenet:

3. példa:

Hozzon létre egy bash fájlt a következő parancsfájllal, amely különböző típusú feladatokat hajt végre a felhasználó által megnyomott billentyű alapján. Ha a felhasználó megnyomja az „1” gombot, akkor két parancssori argumentumot ad hozzá, és nyomtat. Ha a felhasználó megnyomja a „2” gombot, akkor kivon két parancssori argumentumot, és kinyomtatja. A szkript folyamatosan fut, amíg a felhasználó le nem nyomja a „3” gombot.

#!/bin/bash
v1=$ 1
v2=2 USD
míg:
tedd
kidobta „1. Kiegészítés'
kidobta „2. Kivonás'
kidobta „3. Kilépés'
kidobta -n '1. vagy 2. vagy 3. típus:'
olvas -n 1 -t tizenötnak nek
printf ' n'
ügy $ a ban ben
1* ) kidobta '$ v1+$ v2=$ (($ v1+$ v2)) '';;

2* ) kidobta '$ v1-$ v2=$ (($ v1- $ v2)) '';;

3* ) kijárat 0;;


* ) kidobta 'Próbáld újra.';;
esac
Kész

Futtassa a szkriptet két numerikus argumentumértékkel.

$bashkey3.sh35 tizenöt

Kimenet:

4. példa:

Hozzon létre egy bash fájlt a következő szkripttel. A szkript akkor fejeződik be, amikor a felhasználó megnyomja az ESC billentyűt. Ez a szkript addig nyomtatja a felhasználó által megnyomott billentyűket, amíg az ESC gombot le nem nyomja.

#!/bin/bash
userinput=''
kidobta 'Kilépéshez nyomja meg az ESC gombot'
# egyetlen karakter olvasása
míg olvas -r -n1kulcs
tedd
# ha bemenet == ESC billentyű
ha [[ $ kulcs== $'És' ]];
azután
szünet;
lenni
# Adja hozzá a kulcsot a felhasználó által megnyomott változóhoz.
userinput+=$ kulcs
Kész
printf ' nBeírtad:$ userinput n'

Futtassa a szkriptet.

$bashkey4.sh

Kimenet:

5. példa:

Hozzon létre egy bash fájlt a következő kóddal, amely megvárja az ENTER billentyűt a szkript leállításához. A szkript a kiszolgáló nevét veszi fel bemenetként, és 2 másodpercenként megpróbálja pingelni a kiszolgálót. Ha a ping parancs megkapja a választ a szervertől, akkor a kimenet megjelenítésével leállítja a szkriptet, különben megvárja a felhasználó válaszát vagy az ENTER billentyűt az üzenet kinyomtatásával.

#!/bin/bash
kidobta 'Írja be a pingelni kívánt szerver címét'
olvasszerver
míg ! ping -c 1 -n -BAN BEN 2 $ szerver
tedd
kidobta 'Próbálok csatlakozni$ szerver'
kidobta 'Nyomja meg az [ENTER] gombot a befejezéshez '
olvas -s -N 1 -t 1kulcs
ha [[ $ kulcs== $' x0a' ]];# ha bemenet == ENTER billentyű
azután
kijárat 0
lenni
Kész
printf '%s n' '$ szerverfut'

Futtassa a szkriptet.

$bashkey5.sh

Kimenet:

Következtetés:

Ez az oktatóanyag bemutatja, hogyan írhatja le a bash szkriptet különböző módokon, amelyek megvárják, amíg a felhasználó beírása elvégzi a kívánt feladatot, vagy leállítja a szkriptet. Reméljük, a fenti példák gyakorlása után képes lesz arra, hogy megírja a szkriptet úgy, hogy megvárja a gombnyomást, és elvégezze az adott feladatot a felhasználó által megnyomott billentyű alapján.