Posez votre question Signaler

[script/bash] Variable d'environnement [Résolu]

panicc 6Messages postés 5 juillet 2005Date d'inscription - Dernière réponse le 7 juil. 2005 à 23:22
Bonjour,

J'écris un script qui appelle une variable d'environnement:
tail $[$fichier]

la variable $fichier etant definie dans le script.

il reconnait la variable mais refuse d'executer la commande tail. Le message d'erreur est du style:
./script: line 71: /Users/nobody/Documents/fichier.txt: syntax error: operand expected (error token is "/Users/nobody/Documents/fichier.txt")

je ne sais pas quoi faire...

panicc
Lire la suite 

[script/bash] Variable d'environnement »

10 réponses
Réponse
+0
moins plus
Je ne sais pas ce que tu veux faire.
L'entité
$[$fichier] est une expression arithmétique (évalua tion du contenu de la variable fichier)
exemple
johand@horus:~$ fichier=packages-2005-05-10
johand@horus:~$ echo $[$fichier]
-2020
johand@horus:~$ fichier=packages-2005-05-10.txt
johand@horus:~$ echo $[$fichier]
bash: packages-2005-05-10.txt: syntax error in expression (error token is ".txt")

Extrait de man bash
Arithmetic  expansion allows the evaluation of an arithmetic expression and the substitution of the result.  The format for  arithmetic  expansion is:

              $((expression))

       The  old  format  $[expression]  is  deprecated  and will be removed in  upcoming versions of bash.

Essaye de préciser le but de ta manip...
Johan
jipicypanicc - 7 juil. 2005 à 09:55
Salut,

Je suis pas sur d'avoir tout pigé là :-/
mais j'ai ça en stock, en espèrant que ça puisse servir :
[jp@Mandrake tmpfs]$ my_var=var

[jp@Mandrake tmpfs]$ echo $my_var
var

[jp@Mandrake tmpfs]$ echo `echo  \\$"$my_var"`
$var

[jp@Mandrake tmpfs]$
;-))
jipicypanicc - 7 juil. 2005 à 19:02
Bon laissez tomber ce que j'ai dit au-dessus, je m'étais totalement "gourgé" ;-(
Enfin, non disons que j'avais mal interprétationné la "chose" :-DDD

Donc revenons à nos moutons et il semblerait qu'avec la commande "eval" (commande interne du "bash"), ça le fasse :
[jp@Mandrake tmpfs]$ monfich=/home/jp/tmpfs/fich.txt

[jp@Mandrake tmpfs]$ cat fich.txt
Ceci est un exemple d'affichage avec un remplacement de variable.
Pour ce faire nous utilisons la commande interne du bash "eval".

[jp@Mandrake tmpfs]$ echo $monfich
/home/jp/tmpfs/fich.txt

[jp@Mandrake tmpfs]$ var_monfich='$monfich'

[jp@Mandrake tmpfs]$ echo $var_monfich
$monfich

[jp@Mandrake tmpfs]$ cat $var_monfich
cat: $monfich: No such file or directory

[jp@Mandrake tmpfs]$ eval cat $var_monfich
Ceci est un exemple d'affichage avec un remplacement de variable.
Pour ce faire nous utilisons la commande interne du bash "eval".

[jp@Mandrake tmpfs]$
Enjoy (comme dirait l'ami "johndoe") ;-))
asevere - 7 juil. 2005 à 23:22
Arf, Bien joué :)

Je croyait pourtant avoir trituré eval dans tout les sens hier, mais j'ai du louper un test :)
Ajouter un commentaire
Réponse
+0
moins plus
il ne faut pas des espaces autours des crochets ?
Ajouter un commentaire
Réponse
+0
moins plus
J'ai donc essayé les 2 propositions:

> echo $[ $fichier]
c'est idem que $[$fichier]

> echo $fichier
s'affiche le nom de la variable d'environment sans le $. Donc bien sûr ce n'est pas le contenu du fichier qui s'affiche...

Si j'ai bien compris ta réponse Johan: je ne peux pas stocker le nom d'une variable d'environnement dans une variable telle que $fichier? ??
Mais alors comment faire?
Ajouter un commentaire
Réponse
+0
moins plus
Salut à tous et notamment à jipicy!

Merci jipicy! ça marche! Je n'y croyais plus!!!!

Donc voici le récapitulatif de la solution:
(Ecrit par jipicy)

----------
il semblerait qu'avec la commande "eval" (commande interne du "bash"), ça le fasse :

[jp@Mandrake tmpfs]$ monfich=/home/jp/tmpfs/fich.txt

[jp@Mandrake tmpfs]$ cat fich.txt
Ceci est un exemple d'affichage avec un remplacement de variable.
Pour ce faire nous utilisons la commande interne du bash "eval".

[jp@Mandrake tmpfs]$ echo $monfich
/home/jp/tmpfs/fich.txt

[jp@Mandrake tmpfs]$ var_monfich='$monfich'

[jp@Mandrake tmpfs]$ echo $var_monfich
$monfich

[jp@Mandrake tmpfs]$ cat $var_monfich
cat: $monfich: No such file or directory

[jp@Mandrake tmpfs]$ eval cat $var_monfich
Ceci est un exemple d'affichage avec un remplacement de variable.
Pour ce faire nous utilisons la commande interne du bash "eval".
---------

CA MARCHE!!!

a+ :D
jipicy - 7 juil. 2005 à 20:09
Happy for you ;-))
Ajouter un commentaire
Ce document intitulé « [script/bash] Variable d'environnement » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?