BASH Script : Gestion de touche

Résolu
Gimly86 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
Gimly86 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
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 :)
A voir également:

4 réponses

Gimly86 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
Bon, bah c'est pas grave. Merci quand même :)
0