Toon posts:

bash - pause [press enter to continue..] in functie

Pagina: 1
Acties:

Onderwerpen

Vraag


  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

馃惂 Linux HOoligan

Topicstarter
Bezig met simpel bash script ding, na ruim 1.5uur frotten (duurt lang) begrijp ik het niet meer :+

gestripte versie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#pause functie
function DEVTEST {
echo "blaat"
read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
    echo 'A key was pressed.'
else
    echo 'No key was pressed.'
fi
}

#test menu

whiptail --title "DEV DEPLOYER 3000" --checklist --separate-output "Flavors:" 20 78 10  \
"TEST"  "TESTING" off 2>results
#.
while read choice
do
case $choice in
TEST) DEVTEST
;;
esac
done < results


dat geeft bij mij een:
code:
1
No key was pressed.


haal ik dit uit de functie, werkt het wel [..] maar ik 'moet' het juist in een functie gebruiken

iemand misschien een suggestie waar ik het moet zoeken? iets met bomen en bos ofzo :+

ฅ ʕ•̫͡ᴥ•ʔ ฅ
RootGamer.com ☆ LINUX GAMES
🔧 Steam
RootGamer_com脝 Origin HollandHardsƱplay HollandHards

Beste antwoord (via himlims_ op 17-09-2021 12:29)


  • Schnupperpuppe
  • Registratie: Maart 2008
  • Laatst online: 20:28
done < results
Dit is je probleem. De read haalt zijn input uit het results bestand. Niet van je keyboard.
Een '< /dev/tty' achter de read lost het op.

[Voor 15% gewijzigd door Schnupperpuppe op 17-09-2021 12:15]

Alle reacties


  • Ultraman
  • Registratie: Februari 2002
  • Laatst online: 10:41

Ultraman

Moderator Harde Waren

Boefje

Helpt dit?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#pause functie

function wait_for_key() {
    if read -t5 -n1 -r -p "Press any key within the next 5 seconds..."; then
        echo "A key was pressed" 
    else
        echo "No key was pressed"
    fi
}

echo "A little script that waits for your input"
wait_for_key
# klaar
exit


Niet exact gerepliceerd wat je hebt.
Ik heb die read meteen in de if gestoken, want als die een 0 terug krijgt als rc dan is dat gelijk aan true, zo niet dan false.

Als je stil blijft staan, komt de hoek wel naar jou toe.


  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

馃惂 Linux HOoligan

Topicstarter
Dank voor je support. Doe ik jou scriptje, werkt dat prima.

Echter wil ik die 'press key' aanroepen bij een gekozen menu optie (functie die uitgevoerd wordt)

#!/bin/bash
wait_for_key() {
    if read -t5 -n1 -r -p "Press any key within the next 5 seconds..."; then
        echo "A key was pressed"
    else
        echo "No key was pressed"
    fi
}

DEVTEST() {
echo "doet iets fancy, daarna user input";
wait_for_key
}

maar die poept er weer een 'no key was pressed' uit |:(

ergens bij stack, gevonden dat het 'anders' aangeroepen moest worden, dat vangt die wait_key ook niet af 8)7

wait_for_key() {
    if read -t5 -n1 -r -p "Press any key within the next 5 seconds..."; then
        echo "A key was pressed"
    else
        echo "No key was pressed"
    fi
}


DEVTEST() {
echo "doe iets";
    wait_for_key() {
	if read -t5 -n1 -r -p "Press any key within the next 5 seconds..."; then
    	    echo "A key was pressed"
	else
    	    echo "No key was pressed"
	fi
	}
    wait_for_key;
    unset -f wait_for_key
}



het scriptje 'wacht' niet; gaat direct door naar 'no key was pressed' :F zo moeilijk zou dit toch niet moeten zijn :+ (wordt langzaam duur scriptje zo O-) )

ฅ ʕ•̫͡ᴥ•ʔ ฅ
RootGamer.com ☆ LINUX GAMES
🔧 Steam
RootGamer_com脝 Origin HollandHardsƱplay HollandHards


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • Schnupperpuppe
  • Registratie: Maart 2008
  • Laatst online: 20:28
done < results
Dit is je probleem. De read haalt zijn input uit het results bestand. Niet van je keyboard.
Een '< /dev/tty' achter de read lost het op.

[Voor 15% gewijzigd door Schnupperpuppe op 17-09-2021 12:15]


  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

馃惂 Linux HOoligan

Topicstarter
je begrijpt, ben totaal geen expert in deze

hoe vang ik dat dan af? haal ik die 'done < results' weg, krijg ik een syntax error

zet ik dat whiptail stuk t/m done < results in een {functie} en roep die los aan, vind die 'wacht' het nog steeds niet leuk

@Schnupperpuppe :> waar kan ik de kuddo naar verzenden

[Voor 10% gewijzigd door himlims_ op 17-09-2021 12:30]

ฅ ʕ•̫͡ᴥ•ʔ ฅ
RootGamer.com ☆ LINUX GAMES
🔧 Steam
RootGamer_com脝 Origin HollandHardsƱplay HollandHards




Nintendo Switch (OLED model) Apple iPhone SE (2022) LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S22 Garmin f膿nix 7 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 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee