[script/bash] Variable d'environnement
Résolu/Fermé
panicc
asevere
- Messages postés
- 4
- Date d'inscription
- mardi 5 juillet 2005
- Statut
- Membre
- Dernière intervention
- 7 juillet 2005
asevere
- Messages postés
- 13089
- Date d'inscription
- lundi 28 janvier 2002
- Statut
- Webmaster
- Dernière intervention
- 3 février 2022
A voir également:
- [script/bash] Variable d'environnement
- [script/bash] Variable d'environnement ✓ - Forum - Shell
- [Script bash] Variable ✓ - Forum - Shell
- Bash - La variable d'environnement PATH - Conseils pratiques - Bash
- Variable script bash - Conseils pratiques - Bash
- Recuperation variable du php au script bash ✓ - Forum - Shell
4 réponses
jisisv
6 juil. 2005 à 06:23
- Messages postés
- 3645
- Date d'inscription
- dimanche 18 mars 2001
- Statut
- Modérateur
- Dernière intervention
- 15 janvier 2017
6 juil. 2005 à 06:23
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
Extrait de man bash
Essaye de préciser le but de ta manip...
Johan
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
Timon1102
6 juil. 2005 à 17:12
- Messages postés
- 354
- Date d'inscription
- jeudi 2 juin 2005
- Statut
- Membre
- Dernière intervention
- 30 décembre 2010
6 juil. 2005 à 17:12
il ne faut pas des espaces autours des crochets ?
panicc
6 juil. 2005 à 18:05
- Messages postés
- 4
- Date d'inscription
- mardi 5 juillet 2005
- Statut
- Membre
- Dernière intervention
- 7 juillet 2005
6 juil. 2005 à 18:05
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?
> 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?
panicc
7 juil. 2005 à 19:23
- Messages postés
- 4
- Date d'inscription
- mardi 5 juillet 2005
- Statut
- Membre
- Dernière intervention
- 7 juillet 2005
7 juil. 2005 à 19:23
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
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
- Messages postés
- 40805
- Date d'inscription
- jeudi 28 août 2003
- Statut
- Modérateur
- Dernière intervention
- 10 août 2020
7 juil. 2005 à 20:09
Happy for you ;-))
6 juil. 2005 à 17:03
Donc le but de ma manip:
j'ai 10 fichiers (dont les chemins sont définis comme variables d'environnements-> car ça change parfois).
Je souhaite faire un petit script qui utilise ces fichiers, mais le script ne traite pas toujours les 10 fichiers à la fois. Donc le nom de la variable d'environnement qui accède au fichier à traiter je la stocke dans la variable $fichier.
a+
panicc
6 juil. 2005 à 22:57
j'aurais nomme ta variable $fichier -> $var_fichier
mettons que $fichier contient "/home/toi/ton_fichier"
$var_fichier contient "fichier"
en gros, tu voudrais que
cat $var_fichier <=> cat $fichier <=> cat /home/toi/ton_fichier
C'est bien ça ?
Dans ce cas, je ne connais pas cette possibilitée dans bash, mais on ne sais jamais, je cherchais a faire la même chose a peu prés en php, et j'ai fini par tomber dessus
En attendant tu peux toujour te créer un fichier temporaire
mettons que tes variable d'environnement soient:
fichier=/mon_fichier
var_fichier=fichier
Ton script pourrait commencer par:
cat >tmp<<EOF
a=\$$var_fichier
EOF
source tmp && rm tmp
cat $a #doit afficher $fichier
A tester :)
7 juil. 2005 à 09:55
Je suis pas sur d'avoir tout pigé là :-/
mais j'ai ça en stock, en espèrant que ça puisse servir : ;-))
7 juil. 2005 à 19:02
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 : Enjoy (comme dirait l'ami "johndoe") ;-))
7 juil. 2005 à 23:22
Je croyait pourtant avoir trituré eval dans tout les sens hier, mais j'ai du louper un test :)