Se connecter / S'enregistrer
Votre question

Script SH - Not a valid indetifier

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
24 Janvier 2007 14:09:08

Bonjour,


Je recherche à faire un script assez bête mais je comprends pas, il ne semble pas prendre en compte le contenu de la variable 'read'

Voici mon script SH :

Citation :
#!/bin/sh
SEPARATEUR="==================="
echo $SEPARATEUR
echo "Menu d'exploitation"
echo $SEPARATEUR
echo ""
echo "[1] - Lancer TSE"
echo ""
echo "[2] - Arrêter TSE"
echo ""
echo "[3] - Quitter"
echo ""
delai_seconde=5
echo " Choix :"
read choix
case $choix in
1) echo "Lancement de TSE"
net start "Services Terminal Server";;
2) echo "Arret de TSE"
net stop "Services Terminal Server";;
3) break;;
*) echo "Option non valide";;
esac


Quand je le lance, il m'affiche le menu et attend bien une saisie au clavier. Quand je fais une saisie au clavier voilà ce qu'il me renvoit :

Citation :
$ ./menu.sh
===================
Menu d'exploitation
===================

[1] - Lancer TSE

[2] - Arrêter TSE

[3] - Quitter

Choix :
1
': not a valid identifier `choix
'/menu.sh: line 16: syntax error near unexpected token `in
'/menu.sh: line 16: `case $choix in


J'avoue que je comprends pas très bien ce qu'il se passe surtout que le code est pas compliqué... pour info pour exécuter le script, j'utilise Cygwin...

Merci d'avance.

PS: Autre chose tant que j'y suis :D  La commande "clear" ne fonctionne pas... y a t'il une astuce ?

Autres pages sur : script not valid indetifier

24 Janvier 2007 16:36:12

chez moi ca marche, t'as modifie qq chose sur cygwin?
d'ailleurs clear.exe aussi marche :ouch: 
24 Janvier 2007 18:47:51

Ben je ne vois pas très bien ce que j'ai modifié... j'ai fait une install normal avec les pakages pour l'utilisation de SSH (+ ceux d'emacs je crois) et puis c'est tout :-s

pour le clear, en fait j'ai réussi à le faire fonctionner mais seulement si je mets une ligne du type PS3=... juste derrière le clear...

Cela peut-il venir de mon éditeur (Sciite) qui enregistrerai dans un format particulier ?
25 Janvier 2007 10:26:19

Bon j'ai refais des tests, il y a du mieux mais il y a des choses bizarres...

Voici mon code :

Citation :

#!/bin/sh
choix=2
trap '' 2 3 #Annule la commande Ctr+C
while[$choix -ne 3] #Test s'il l'on doit quitter le menu ou non
do
#clear #Début menu
SEPARATEUR="==================="
echo $SEPARATEUR
echo "Menu d'exploitation"
echo $SEPARATEUR
echo ""
echo "[1] - Lancer TSE"
echo ""
echo "[2] - Arrêter TSE"
echo ""
echo "[3] - Quitter"
echo ""
delai_seconde=5
echo " Choix :"
read choix #Lecture du choix
case $choix in #Case
1) echo "Lancement de TSE" #Choix 1
net start "Services Terminal Server";; #Exec
2) echo "Arret de TSE" #Choix 2
net stop "Services Terminal Server";; #Exec
3) exit;; #Choix 3
*) echo "Option non valide";; #Autre choix
esac #
done
exit #Sortie du menu


Et le truc c'est que je suis obligé de mettre des commentaires sinon il me renvoit des erreurs de "command not found"...

D'ailleurs ce programme ne marche toujours pas car il ne "reconnait pas" le "done"...

Quelqu'un a t'il une idée ?

Edit: Voici ce que cela donne lors de l'exécution :
Citation :

$ ./menu.sh
-ne 3]: command not found
: command not founddo
===================
Menu d'exploitation
===================

[1] - Lancer TSE

[2] - Arrêter TSE

[3] - Quitter

Choix :
2
Arret de TSE
La pause ou l'arrêt demandé(e) n'est pas valide pour ce service.

Vous obtiendrez une aide supplémentaire en entrant NET HELPMSG 2191.

: command not found done
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS