/ / comment arrêter un programme bash (boucle en boucle) en appuyant sur une touche ou sur une combinaison? [dupliquer] - bash, boucles, signaux

comment arrêter un programme bash (boucle) en appuyant sur la touche ou la combinaison? [duplicate] - bash, boucles, signaux

J'ai une boucle while, j'aimerais l'arrêter lorsque l'utilisateur appuie sur la lettre "s" du clavier.

Je devrais gérer le problème avec un "piège" et en utilisant un signal relatif, que le bloc par défaut a avec la combinaison "ctrl + c", mais j'aurais le même effet en appuyant sur "s".

(Je n'ai pas besoin d'utiliser la commande read)

Où placer les commandes?

pourriez-vous m'expliquer?

Je vous remercie

Le code:

!/bin/bash

while true

do

echo text text text text

done

Réponses:

0 pour la réponse № 1

Après quoi Aserre dit:

#!/bin/bash

if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi

keypress=""
while [ "$keypress" != "s" ]; do
echo text text text
keypress="`cat -v`"
done

if [ -t 0 ]; then stty sane; fi

0 pour la réponse № 2

Je ne sais pas pourquoi tu ne veux pas utiliser read comme il serait aussi simple que

#! /bin/bash

while :
do
echo "text text text"
read -t 0.3 -n 1 k
[[ "$k" == "s" ]] && break
done