Problème de syntaxe avec les variables

Problème de syntaxe avec les variables - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-08-2008 à 17:20:32    

Hello (ça faisait longtemps!) !
 
 
Pour changer, j'ai un souci en shell, voici un bout de code pour montrer le problème:

Code :
  1. RUE1=foo
  2. RUE2=bar
  3. NBRUE=1
  4. RUE=`echo $RUE$NBRUE`


 
Le problème est que la variable RUE ne contient que "1" au lieu de "foo"
 
J'ai essayé plusieurs syntaxes, mais je tourne en rond, qu'est-ce que j'ai loupé ?
 
Merci à tous !
RedVivi
 

Reply

Marsh Posté le 19-08-2008 à 17:20:32   

Reply

Marsh Posté le 19-08-2008 à 17:31:30    

Il manquait "1", justement.
 
Version propre :
#!/bin/sh
RUE1="foo"
RUE2="bar"
NBRUE="1"
 
RUE="${RUE1} ${NBRUE}"
echo ${RUE}


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 19-08-2008 à 17:36:08    

Merci mais ça ne fonctionne pas chez moi, la variable prend la valeur "1" mais pas de foo, ni de bar

Reply

Marsh Posté le 19-08-2008 à 17:49:54    

redvivi a écrit :

Merci mais ça ne fonctionne pas chez moi, la variable prend la valeur "1" mais pas de foo, ni de bar


RUE="${RUE1} ${RUE2} ${NBRUE}"


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 19-08-2008 à 17:58:25    

Oops ! Pardonne moi, j'ai compris, je me suis mal exprimé...en fait ce n'est pas tout à fait ce que je veux comme résultat par exemple c'est que la variable RUE contienne "foo" si NBRUE a la valeur 1 (RUE aura pris la valeur de RUE1), et que si je change NBRUE a la valeur 2, je voudrais que RUE contienne "bar" (RUE aura pris la valeur de RUE2)

Reply

Marsh Posté le 19-08-2008 à 18:07:35    

redvivi a écrit :

Oops ! Pardonne moi, j'ai compris, je me suis mal exprimé...en fait ce n'est pas tout à fait ce que je veux comme résultat par exemple c'est que la variable RUE contienne "foo" si NBRUE a la valeur 1 (RUE aura pris la valeur de RUE1), et que si je change NBRUE a la valeur 2, je voudrais que RUE contienne "bar" (RUE aura pris la valeur de RUE2)


T'as déjà codé dans ta vie ?! Par ce que au vue de tes différents post... Tu dis que c'est pour un projet pro, mais vue ton niveau je me demande bien quelle entreprise embauche une personne pour un job dont il ne connais quasiment rien...

 

Pour faire ça, comme dans TOUS les langages de programmation, tu fais un tableau !

mon_tableau[index]=variable # instanciation
${mon_tableau[index]} # appel d'un élément
${mon_tableau[*]} # appel de l'ensemble du tableau


Message édité par zeblods le 19-08-2008 à 18:15:03
Reply

Marsh Posté le 19-08-2008 à 18:15:04    

(....)
Ya vraiment des jours où se sent bête, à vrai dire je n'ai jamais utilisé de tableau en shell, je n'ai pas eu le réflexe, c'est moche....Enfin bon, ce soucis là est résolu, par contre j'en ai un autre (pas aussi bete je pense)

Code :
  1. i=0
  2. while read lig 0<&3
  3. do
  4. i=`expr $i "+" 1`
  5. RUE$i=`echo $lig`


 
me donne par exemple: R

Code :
  1. UE2=foo&;bar: Aucun fichier ou répertoire de ce type


 
J'ai essayé d'échapper les caracteres mais sans succès, je suis quasiment sur que c'est RUE$i qui n'est pas considérée comme une variable

Message cité 1 fois
Message édité par redvivi le 19-08-2008 à 18:15:29
Reply

Marsh Posté le 19-08-2008 à 18:17:18    

redvivi a écrit :

(....)
Ya vraiment des jours où se sent bête, à vrai dire je n'ai jamais utilisé de tableau en shell, je n'ai pas eu le réflexe, c'est moche....Enfin bon, ce soucis là est résolu, par contre j'en ai un autre (pas aussi bete je pense)

Code :
  1. i=0
  2. while read lig 0<&3
  3. do
  4. i=`expr $i "+" 1`
  5. RUE$i=`echo $lig`
 

me donne par exemple: R

Code :
  1. UE2=foo&;bar: Aucun fichier ou répertoire de ce type
 

J'ai essayé d'échapper les caracteres mais sans succès, je suis quasiment sur que c'est RUE$i qui n'est pas considérée comme une variable


Utilise un tableau... L'exemple est 2 post avant...


Message édité par zeblods le 19-08-2008 à 18:17:37
Reply

Marsh Posté le 19-08-2008 à 18:26:01    

Bon, résultat: ça fonctionne et j'ai un post-it sur mon écran me rappelant l'importance des tableaux....
 
Merci !

Reply

Marsh Posté le 20-08-2008 à 13:53:43    

Cette fois-ci, je suis sur que ce n'est pas un problème de tableau, mais j'ai du mal avec une variable (je n'ai pas de chance) ! Voici la déclaration:

 
Code :
  1. HEADERS="-H 'Accept: text/xml' \
  2. -H 'Accept:Encoding: gzip'"
 

et si j'exécute:

 
Code :
  1. curl $HEADERS foo.com
 

Il considère $HEADERS comme une URL également, j'ai essayé d'échapper les caractères, de changer les single quotes par des doube quotes mais ça n'a rien changé.

 

Comment faire dans ce cas là ?

 

Merci d'avance !
RedVivi


Message édité par redvivi le 20-08-2008 à 13:54:33
Reply

Marsh Posté le 20-08-2008 à 13:53:43   

Reply

Marsh Posté le 21-08-2008 à 19:41:13    

Je poste ici le résultat de mes recherches sur cette f**** variable qui ne veut pas passer:
 

Code :
  1. ~ user$ HEADERS="-H 'Accept:text/xml' -H 'Accept:Encoding:gzip'"
  2. ~ user$ curl $HEADERS google.fr
  3. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
  4. <TITLE>301 Moved</TITLE></HEAD><BODY>
  5. <H1>301 Moved</H1>
  6. The document has moved
  7. <A HREF="http://www.google.fr/">here</A>.
  8. </BODY></HTML>
  9. ~ user$ HEADERS="-H 'Accept: text/xml' -H 'Accept:Encoding: gzip'"
  10. ~ user$ curl $HEADERS google.fr
  11. curl: (6) Couldn't resolve host 'text'
  12. curl: (6) Couldn't resolve host 'gzip''
  13. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
  14. <TITLE>301 Moved</TITLE></HEAD><BODY>
  15. <H1>301 Moved</H1>
  16. The document has moved
  17. <A HREF="http://www.google.fr/">here</A>.
  18. </BODY></HTML>
  19. ~ user$ HEADERS="-H 'Accept:\ text/xml' -H 'Accept:Encoding:\ gzip'"
  20. ~ user$ curl $HEADERS google.fr
  21. curl: (6) Couldn't resolve host 'text'
  22. curl: (6) Couldn't resolve host 'gzip''
  23. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
  24. <TITLE>301 Moved</TITLE></HEAD><BODY>
  25. <H1>301 Moved</H1>
  26. The document has moved
  27. <A HREF="http://www.google.fr/">here</A>.
  28. </BODY></HTML>
  29. ~ user$ HEADERS="-H "Accept:\ text/xml" -H "Accept:Encoding:\ gzip""/
  30. [~ user$ curl $HEADERS google.fr
  31. curl: (6) Couldn't resolve host 'text'
  32. curl: (6) Couldn't resolve host 'gzip'
  33. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
  34. <TITLE>301 Moved</TITLE></HEAD><BODY>
  35. <H1>301 Moved</H1>
  36. The document has moved
  37. <A HREF="http://www.google.fr/">here</A>.
  38. </BODY></HTML>
  39. ~ user$ HEADERS="-H \"Accept: text/xml\" -H \"Accept:Encoding: gzip\""
  40. ~ user$ curl $HEADERS google.fr
  41. curl: (6) Couldn't resolve host 'text'
  42. curl: (6) Couldn't resolve host 'gzip"'
  43. <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
  44. <TITLE>301 Moved</TITLE></HEAD><BODY>
  45. <H1>301 Moved</H1>
  46. The document has moved
  47. <A HREF="http://www.google.fr/">here</A>.
  48. </BODY></HTML>


 
Est-ce que vous avez une idée :??: (à défaut d'avoir du pétrole)  :D  !?


Message édité par redvivi le 21-08-2008 à 19:48:51
Reply

Marsh Posté le 25-08-2008 à 00:54:27    

Citation :

#!/bin/bash
 
HEADERS="-H 'Accept: text/xml' -H 'Accept:Encoding: gzip'"
 
curl "${HEADERS}" google.fr


 
pfff...


---------------
La réponse est 42
Reply

Marsh Posté le 26-08-2008 à 00:01:52    

Cependant si tu utilises des variables dans les Headers ça ne fonctionne pas non plus...:-(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed