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

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • 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 :+

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards

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


  • Schnupperpuppe
  • Registratie: Maart 2008
  • Laatst online: 09:15
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


Acties:
  • +1 Henk 'm!

  • Ultraman
  • Registratie: Februari 2002
  • Laatst online: 11-09 14:49

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.


Acties:
  • 0 Henk 'm!

  • 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-) )

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards


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

  • Schnupperpuppe
  • Registratie: Maart 2008
  • Laatst online: 09:15
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 ]


Acties:
  • 0 Henk 'm!

  • 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 ]

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards