Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1265 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  pb nom de variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb nom de variable

n°1178982
crement
Posté le 18-08-2005 à 17:52:23  profilanswer
 

bon alors voila, je comprends pas du tout ce qu'il se passe...
je fais un ptit menu pour mon batch avec des echo qui vont bien...
et lorsque je veux recuperer le choix dans une variable avec un read, ca coince:
la console me mets "invalid variable name"...
 
 
donc je fais:
 

Code :
  1. echo "Mon menu blabla"
  2. read reponse


 
et ca coince
 
merci de votre aide

mood
Publicité
Posté le 18-08-2005 à 17:52:23  profilanswer
 

n°1179068
gocho
Posté le 18-08-2005 à 19:01:02  profilanswer
 

euh j'y connais pas grand chose la dedans mais pour te permettre d'avoir une reponse (pas forcement mais ca peut aider) je te conseillerais de mettre tout le code.Parce que la on ne voit rien de la declaration de ta variable, etc...
 

n°1179167
wackevat
Posté le 18-08-2005 à 21:24:07  profilanswer
 

et pour quel OS aussi.

n°1179378
crement
Posté le 19-08-2005 à 10:15:16  profilanswer
 

donc c'est pour du linux et je pense que le shell c est du ksh... mais quand je declare en entete ca me fait une couille
 
bon en fait ca doit virer tous les fichiers d'une arborescence et y en a 4 identiques avec à chaque fois  encore un choix pour 2 autres arborences à l'interieur... les * c est normal, y a du texte à la place mais j'ai pas trop le droit de le mettre...
 
et donc mon  problème c est que reponse1 et reponse2 ne sont pas reconnus comme des noms de variable...
 
merci de votre aide
 

Code :
  1. echo "Quel est le repertoire a nettoyer?"
  2. echo "Pour ***instance0, taper 0"
  3. echo "Pour ***instance1, taper 1"
  4. echo "Pour ***instance2, taper 2"
  5. echo "Pour ***instance3, taper 3"
  6. echo "choix:"
  7. read reponse1
  8. echo  ""
  9. echo "  Pour nettoyer  /***_dev/custom ,    taper 1"
  10. echo "  Pour nettoyer  /***_dev/WEB_INT/classes/com/*** , taper 2"
  11. echo "choix:"
  12. read reponse2
  13. case $reponse1 in
  14.   0)$path= /5.3/***instance0
  15.      ;;
  16.   1)$path= /5.3/***instance1
  17.       ;;
  18.   2)$path= /5.3/***instance2
  19.       ;;
  20.   3)$path= /5.3/***instance3
  21.       ;;
  22.   *)echo Erreur dans le choix du répertoire a nettoyer
  23.    exit 1
  24.    ;;
  25. esac
  26. case $reponse2 in
  27.   1)path=$path/webapps/***_dev/custom  
  28.     rm -rf $path
  29. mkdir classic/menubar
  30. mkdir config/classic/menubar
  31. mkdir config/fax
  32. mkdir config/main
  33. mkdir config/statusbar
  34. mkdir config/system/login
  35. mkdir config/titlebar
  36. mkdir config/wdk
  37. mkdir config/webcomponent/actions
  38. mkdir config/webcomponent/library
  39. mkdir fax
  40. mkdir statusbar
  41. mkdir strings
  42. mkdir system/login
  43. mkdir theme/coolblue/css
  44. mkdir theme/coolblue/icons
  45. mkdir theme/coolblue/images
  46. mkdir theme/docublue/css
  47. mkdir theme/docublue/icons
  48. mkdir theme/docublue/images
  49. mkdir theme/documentum/css
  50. mkdir theme/documentum/icons
  51. mkdir theme/documentum/images
  52. mkdir theme/high contrast/css
  53. mkdir theme/high contrast/icons
  54. mkdir theme/high contrats/images
  55. mkdir theme/kaleidoscope/css
  56. mkdir theme/kaleidoscope/icons
  57. mkdir theme/kaleidoscope/images
  58. mkdir theme/mellow/css
  59. mkdir theme/mellow/icons
  60. mkdir theme/mellow/images
  61. mkdir theme/shiny/css
  62. mkdir theme/shiny/icons
  63. mkdir theme/shiny/images
  64. mkdir theme/trendy/css
  65. mkdir theme/trendy/icons
  66. mkdir theme/trendy/images
  67. mkdir titlebar
  68. mkdir wdk/system/setprivatekey
  69. mkdir webcomponent/library/create
  70. mkdir webcomponent/library/permissions
  71. mkdir webcomponent/library/properties
  72.    ;;
  73.   2)path=$path/webapps/WEB_INF/classes/com/****  
  74.    rm -rf $path
  75. mkdir e3f/cnst
  76. mkdir e3f/custom/fax
  77. mkdir e3f/custom/system/login
  78. mkdir e3f/custom/titlebar
  79. mkdir e3f/custom/util
  80. mkdir e3f/fax/cover
  81. mkdir e3f/model/user
  82. mkdir sgib_util/commo/logger
  83. mkdir sgib_util/daemon/common
  84. mkdir sgib_util/dctm/task
  85. mkdir sgib_util/generatedoc/dctm
  86. mkdir sgib_util/generatedoc/element/dctm
  87. mkdir sgib_util/mergedoc
  88. mkdir sgib_util/timer
  89. mkdir sgib_util/wdk/util
  90.    ;;
  91.   *)echo Erreur dans le choix du répertoire a nettoyer
  92.    exit 1
  93.    ;;
  94. esac
  95. exit 0

n°1179846
matafan
Posté le 19-08-2005 à 18:34:32  profilanswer
 

L'erreur que tu as n'a rien a voir avec ce dont tu parles... Enleve les "$" aux lignes 14 16 18 et 20.

n°1181069
crement
Posté le 22-08-2005 à 11:09:22  profilanswer
 

ouais mais non....
 
voila l'erreur:
 
Quel est le repertoire a nettoyer?
Pour ***instance0, taper 0
Pour ***instance1, taper 1
Pour ***instance2, taper 2
Pour ***instance3, taper 3
choix:
: invalid variable nameeponse1
 
                Pour nettoyer  /***_dev/custom ,                        taper 1
                Pour nettoyer  /e3f_dev/WEB_INT/classes/com/**** ,      taper 2
choix:
: invalid variable namereponse2
' unexpected line 12: syntax error at line 13: `in

n°1181071
crement
Posté le 22-08-2005 à 11:09:44  profilanswer
 

dois-je dire que ca me laisse perplexe quand même...

n°1181079
olivthill
Posté le 22-08-2005 à 11:24:37  profilanswer
 

Je devine que le problème n'est pas visible dans le code que tu nous montres.
 
Les messages "invalid ... et unexpected" font penser que le problème se situe juste avant le "read".
 
Il est possible que l'une des lignes "echo" précédentes contient un guillement en trop ou manquant. Il est possible que reponse1 soit une variable déjà définie avant et ne concerne pas une chaine de caractère.
 
Il faut isoler le problème en se faisant des petits exemples plus simples.

n°1181269
crement
Posté le 22-08-2005 à 14:36:49  profilanswer
 

alors la le plus enigmatique;c est que en virant tout le blabla des lignes 1 à 7 et en mettant à la place:
 

Code :
  1. echo choix
  2. read reponse 1


 
ca fait toujours la meme erreur...


Message édité par crement le 22-08-2005 à 14:40:14
n°1181404
matafan
Posté le 22-08-2005 à 17:09:09  profilanswer
 

Bon, camarade si tu veux de l'aidre, commence par recopier tes scripts et messages d'erreurs un peu mieux qu'approximativement. Entre tes differents posts rien ne correspond. Et dans ton dernier post, c'est quoi ce "1" qui traine apres un espace ?

mood
Publicité
Posté le 22-08-2005 à 17:09:09  profilanswer
 

n°1181412
Grululu
Posté le 22-08-2005 à 17:15:12  profilanswer
 

matafan a écrit :

Bon, camarade si tu veux de l'aidre, commence par recopier tes scripts et messages d'erreurs un peu mieux qu'approximativement. Entre tes differents posts rien ne correspond. Et dans ton dernier post, c'est quoi ce "1" qui traine apres un espace ?


 
Par ailleurs

Citation :

je pense que le shell c est du ksh... mais quand je declare en entete ca me fait une couille


 
En quoi déclarer le shell en entête ne fonctionne pas ?
Et quel est exactement le shell que tu utilises ?

n°1181424
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 22-08-2005 à 17:24:18  profilanswer
 

Code :
  1. #! /bin/sh
  2. echo "Quel est le repertoire a nettoyer?"
  3. echo "Pour ***instance0, taper 0"
  4. echo "Pour ***instance1, taper 1"
  5. echo "Pour ***instance2, taper 2"
  6. echo "Pour ***instance3, taper 3"
  7. echo "choix:"
  8. read reponse1
  9. echo ""
  10. echo "        Pour nettoyer  /***_dev/custom ,             taper 1"
  11. echo "        Pour nettoyer  /***_dev/WEB_INT/classes/com/*** ,    taper 2"
  12. echo "choix:"
  13. read reponse2
  14. case "$reponse1" in
  15.   0)
  16.      path="/5.3/***instance0"
  17.      ;;
  18. ...
  19. esac
  20. ...


 
Corrige déjà au moins ceci.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1181440
crement
Posté le 22-08-2005 à 17:39:38  profilanswer
 

Merci pour votre aide. Donc en déclarant mon shelle en entête j'obtiens l'erreur suivante:
 
e3fdev03:5.3@algo05>./nettoyeur
-ksh: ./nettoyeur: not found
 
 
et voici mon code tel quel:
 

Code :
  1. #! /bin/sh
  2. # echo "Quel est le repertoire a nettoyer?"
  3. # echo "Pour e3finstance0, taper 0"
  4. # echo "Pour e3finstance1, taper 1"
  5. # echo "Pour e3finstance2, taper 2"
  6. # echo "Pour e3finstance3, taper 3"
  7. # echo "choix:"
  8. # read reponse1
  9. # echo     ""
  10. # echo "        Pour nettoyer  /e3f_dev/custom ,             taper 1"
  11. # echo "        Pour nettoyer  /e3f_dev/WEB_INT/classes/com/sgib ,    taper 2"
  12. # echo "choix:"
  13. # read reponse2
  14. case $reponse1 in
  15.   0)path= /5.3/e3finstance0
  16.      ;;
  17.   1)path= /5.3/e3finstance1
  18.       ;;
  19.   2)path= /5.3/e3finstance2
  20.       ;;
  21.   3)path= /5.3/e3finstance3
  22.       ;;
  23.   *)echo Erreur dans le choix du répertoire a nettoyer
  24.    exit 1
  25.    ;;
  26. esac
  27. case $reponse2 in
  28.   1)path=$path/webapps/e3f_dev/custom
  29.     rm -rf $path
  30. mkdir classic/menubar
  31. mkdir config/classic/menubar
  32. mkdir config/fax
  33. mkdir config/main
  34. mkdir config/statusbar
  35. mkdir config/system/login
  36. mkdir config/titlebar
  37. mkdir config/wdk
  38. mkdir config/webcomponent/actions
  39. mkdir config/webcomponent/library
  40. mkdir fax
  41. mkdir statusbar
  42. mkdir strings
  43. mkdir system/login
  44. mkdir theme/coolblue/css
  45. mkdir theme/coolblue/icons
  46. mkdir theme/coolblue/images
  47. mkdir theme/docublue/css
  48. mkdir theme/docublue/icons
  49. mkdir theme/docublue/images
  50. mkdir theme/documentum/css
  51. mkdir theme/documentum/icons
  52. mkdir theme/documentum/images
  53. mkdir theme/high contrast/css
  54. mkdir theme/high contrast/icons
  55. mkdir theme/high contrats/images
  56. mkdir theme/kaleidoscope/css
  57. mkdir theme/kaleidoscope/icons
  58. mkdir theme/kaleidoscope/images
  59. mkdir theme/mellow/css
  60. mkdir theme/mellow/icons
  61. mkdir theme/mellow/images
  62. mkdir theme/shiny/css
  63. mkdir theme/shiny/icons
  64. mkdir theme/shiny/images
  65. mkdir theme/trendy/css
  66. mkdir theme/trendy/icons
  67. mkdir theme/trendy/images
  68. mkdir titlebar
  69. mkdir wdk/system/setprivatekey
  70. mkdir webcomponent/library/create
  71. mkdir webcomponent/library/permissions
  72. mkdir webcomponent/library/properties
  73.    ;;
  74.   2)path=$path/webapps/WEB_INF/classes/com/sgib
  75.    rm -rf $path
  76. mkdir e3f/cnst
  77. mkdir e3f/custom/fax
  78. mkdir e3f/custom/system/login
  79. mkdir e3f/custom/titlebar
  80. mkdir e3f/custom/util
  81. mkdir e3f/fax/cover
  82. mkdir e3f/model/user
  83. mkdir sgib_util/commo/logger
  84. mkdir sgib_util/daemon/common
  85. mkdir sgib_util/dctm/task
  86. mkdir sgib_util/generatedoc/dctm
  87. mkdir sgib_util/generatedoc/element/dctm
  88. mkdir sgib_util/mergedoc
  89. mkdir sgib_util/timer
  90. mkdir sgib_util/wdk/util
  91.    ;;
  92.   *)echo Erreur dans le choix du répertoire a nettoyer
  93.    exit 1
  94.    ;;
  95. esac
  96. exit 0


 

n°1181453
matafan
Posté le 22-08-2005 à 17:51:04  profilanswer
 

Tu es sur que les 13 premieres lignes sont en commentaire dans ton script ? Ensuite dans ton premier case, il ne faut pas d'espace apres "path=". Encore une fois, poste to code exact, et le message d'erreur exact.

n°1181491
crement
Posté le 22-08-2005 à 18:23:00  profilanswer
 

le message d erreur est exact, il est vrai que le debut n a rien à faire en commentaire

n°1181509
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 22-08-2005 à 18:49:17  profilanswer
 

1) vérifie les droits du script
2) pas d'espace quand tu affectes : PATH=blablabla
3) protège tes variables quand tu les lis : "$VAR" et pas $VAR


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1182874
IsBack
Posté le 23-08-2005 à 23:44:57  profilanswer
 

Vérifie : #! /bin/sh -> #!/bin/sh
 
Exécution : sh nettoyeur
 
Sinon chmod +x nettoyeur
 
Et après tu tapes juste : nettoyeur pour le lancer.
 
Les variables: $reponse1 -> ${reponse1}
 
Regarde ça : http://www.shellunix.com/sh.html

n°1183017
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 24-08-2005 à 09:17:23  profilanswer
 

IsBack a écrit :

Vérifie : #! /bin/sh -> #!/bin/sh
 
Exécution : sh nettoyeur
 
Sinon chmod +x nettoyeur
 
Et après tu tapes juste : nettoyeur pour le lancer.
 
Les variables: $reponse1 -> ${reponse1}
 
Regarde ça : http://www.shellunix.com/sh.html


 
Pour l'espace il a juste recopié ce que j'ai mis, c'est plus portable en fait :
http://www.gnu.org/software/autoco [...] nf_10.html
 
<<
[...] include a space after the exclamation point in interpreter specifications, like this:
        #! /usr/bin/perl
If you omit the space before the path, then 4.2BSD based systems (such as DYNIX) will ignore the line, because they interpret `#! /' as a 4-byte magic number. Some old systems have quite small limits on the length of the `#!' line too, for instance 32 bytes (not including the newline) on SunOS 4.  
>>


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1183483
IsBack
Posté le 24-08-2005 à 15:38:14  profilanswer
 

ok, je connaissait pas.
Par contre j'ai pas l'impression que ça marche sur toutes les machines.
je suis en SunOs 5.8 et ça marche pas.

n°1183542
matafan
Posté le 24-08-2005 à 17:29:43  profilanswer
 

Si, ca marche sur tous les unix. Evidemment si "." n'est pas dans ton PATH il faut faire "./nettoyeur" et pas seulement "nettoyeur".

n°1183673
couak
Posté le 24-08-2005 à 20:08:12  profilanswer
 

"." dans le path c'est pas très secure (à vérifier)
"l'en-tête" s'appelle une ligne de shebang (shebang line)

n°1183934
crement
Posté le 25-08-2005 à 09:47:36  profilanswer
 

merci... j'avais mis les droits en execution sur le fichier, mais je vais reverifier la... voila voila, si j'ai un problème je vous bippe! ;-)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  pb nom de variable

 

Sujets relatifs
Variable de sessionVariable de session ne passe pas...
récupération de la variable d'URL[ASP.NET] variable de session d'une page asp a aspx ?
Fonction javascript + variable phpperte variable session
Problème de variable PHP dans un script JSComment inclure une variable dans une requête SQL ?
Faire passer une variable par un header("Location: ...")variable static
Plus de sujets relatifs à : pb nom de variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR