BASH Script : Gestion de touche

Résolu/Fermé
Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011 - 29 déc. 2008 à 17:39
Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011 - 30 déc. 2008 à 13:34
Bonjour tout le monde,

Voila, j'ai une petite question, je script en bash depuis un petit moment maintenant et je voudrais savoir s'il est possible de gérer un ensemble de touche dans un script bash.

exemple : en faisant un "ctrl+e" il revienne à une fonction de mon script comme un menu.

Est-ce possible ou non ? Je ne trouve rien sur le net donc je suppose que non, mais on sait jamais s'il y a un expert qui passe par la ... ^^

Merci bien :)

4 réponses

Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011
30 déc. 2008 à 10:23
Un petit up.

J'ai aussi un autre souci avec un if voici le code :

ip()
{
if [ -z $ippub = ''];
    then ippub=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1);
fi
    stsecondin1='81.252.x.x21'
    stsecondin2='81.252.x.x25'
	saulge1='81.252.x.x73'
	saulge2='81.252.x.x69'
	saulge3='81.252.x.x65'
    if [ '$ippub' = '$stsecondin1' ] || [ '$ippub' = '$stsecondin2' ]
		then echo "St Secondin"
        else
			if [ '$ippub' = '$saulge1' ] || [ '$ippub' = '$saulge2' ] || [ '$ippub' = '$saulge3' ]
				then echo "Saulgé"
				else echo "Autre réseau"
			fi
    fi

}


J'ai modifié volontairement les IP's :). Seulement en résultat cette fonction me sort toujours Autre Réseau.

Si quelqu'un à une idée s'il vous plait ?

Merci :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 déc. 2008 à 10:44
Salut,

Il faut des quotes doubles (et non pas des simples) autour des variables dans tes tests de condition (et en règle générale).

Une fonction "case $var in ... esac" ne serait-elle pas plus adaptée à ton cas ?
0
Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011
30 déc. 2008 à 11:28
Merci pour ta réponse, c'est vrai que je n'ai pas pensé à case.

Seulement maintenant j'ai un souci avec ce code :

if [ -z $ippub = ""];
    then ippub=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1);
fi

case $ippub in
 '81.252.x.x21')
  echo "St Secondin"
  ;;
 '81.252.x.x25')
  echo "St Secondin"
  ;;
 '81.252.x.x73')
  echo "Saulgé"
  ;;
 '81.252.x.x69')
  echo "Saulgé"
  ;;
 '81.252.x.x65')
  echo "Saulgé"
  ;;
  *)
  echo "Autre Réseau"
  ;;
esac


Bon seulement il me sort toujours Autre réseau, J'ai vérifié tout de même l'ip que je récupérer par le test dyndns et elle est bien correct. Si quelqu'un a une idée ?

Merci :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 déc. 2008 à 11:45
Le résultat de "$ippub" est-il sensé contenir une adresse IP entourée de quotes simples ?

Si la réponse est non, alors enlèves les quotes simples de tes adresses dans le "case...esac", et enlèves aussi les espaces en début du moins en ce qui concerne les IP ;-))
0
Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011
30 déc. 2008 à 11:55
Non en effet l'ip n'est pas quoté (oui oui de verbe quoter :D), mais j'ai tout de même fait ce que tu as dit jipicy. Seulement le problème persiste, et l'ip récuperer est bien la bonne celle de la valeur 1 de mon case :

ip()
{
if [ -z $ippub = ""];
    then ippub=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1);
fi
case $ippub in
81.252.x.x21)
echo "St Secondin"
;;
81.252.x.x25)
echo "St Secondin"
;;
81.252.x.x73)
echo "Saulgé"
;;
81.252.x.x69)
echo "Saulgé"
;;
81.252.x.x65)
echo "Saulgé"
;;
*)
echo "Autre Réseau"
;;
esac
}
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 déc. 2008 à 12:22
Ben je ne sais que te dire, chez moi ça marche bien ;-\

Juste un truc, il faut un espace avant le crochet fermant de "if [ -z $ippub = ""]" :
if [ -z $ippub = "" ]
;-))
0
Gimly86 Messages postés 17 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 25 août 2011
30 déc. 2008 à 13:34
Bon, bah c'est pas grave. Merci quand même :)
0