Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

[script/bash] Variable d'environnement

panicc, le mardi 5 juillet 2005 à 21:55:58 
 Signaler ce message aux modérateurs

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

1

jisisv, le mercredi 6 juillet 2005 à 06:23:26

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 Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

2

panicc, le mercredi 6 juillet 2005 à 17:03:56

Merci pour ta réponse.

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

Répondre à panicc

5

asevere, le mercredi 6 juillet 2005 à 22:57:27

D'ou l'importance du nom des variable alors :)

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 :)
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

6

jipicy, le jeudi 7 juillet 2005 à 09:55:19

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]$
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

7

jipicy, le jeudi 7 juillet 2005 à 19:02:58

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") ;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

10

 asevere, le jeudi 7 juillet 2005 à 23:22:43

Arf, Bien joué :)

Je croyait pourtant avoir trituré eval dans tout les sens hier, mais j'ai du louper un test :) Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

3

Timon1102, le mercredi 6 juillet 2005 à 17:12:39

Il ne faut pas des espaces autours des crochets ?

Répondre à Timon1102

4

panicc, le mercredi 6 juillet 2005 à 18:05:04

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?

Répondre à panicc

8

panicc, le jeudi 7 juillet 2005 à 19:23:30

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

Répondre à panicc

9

jipicy, le jeudi 7 juillet 2005 à 20:09:19

Happy for you ;-)) Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy
[script/bash] variable environnement via ssh Bonjour, alors voici mon problème: Lorsque je me connecte en ssh de mon client à mon serveur, les variables d'environnement définie ne sont pas rechargées. Je m'explique: en tapant env ou ssh IP_Serveur "env" les valeurs retournées sont les mêmes bien... www.commentcamarche.net/forum/affich-3048720-script-bash-variable-environnement-via-ssh
Script bash (Résolu) Bonjour, Apres execution de mon script bash j'ai un message d'erreur message d'erreur tel que: " mon script est le suivant: #!/bin/bash echo "creation de compte utilisateur" echo "entrer... www.commentcamarche.net/forum/affich-4060937-script-bash
Script bash : boucle while dans while Bonjour, Débutant en matière de script bash (zsh ici), je coince sur une boucle while dans while. Je suis sous Debian Lenny avec zsh... Mon objectif est de faire un script qui m'envoie un mail avec mon adresse IP (dynamique) lorsque celle-ci change.... www.commentcamarche.net/forum/affich-12672783-script-bash-boucle-while-dans-while
[Bash] La variable d'environnement PATHLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou... www.commentcamarche.net/faq/sujet-3585-bash-la-variable-d-environnement-path
[Shell] Tester une variable numériqueTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à... www.commentcamarche.net/faq/sujet-4605-shell-tester-une-variable-numerique
[Linux] Création environnement OpenSSH-CHROOTOpenSSH-CHROOT I. Installation de openssh-chroot A. Téléchargement et vérification de la signature B. Installation C. Ecriture du script de démarrage pour sshd II. Création d'un environnement chroot openssh III. Création d'utilisateurs IV.... www.commentcamarche.net/faq/sujet-3761-linux-creation-environnement-openssh-chroot
Creation d'un script bashBonjour à tous ! Voilà mon problème : Je suis sous SuSE Linux 10.1 Je me sert de YaST pour créer une backup automatique de mon système dans le répertoire /backup/archive et je voudrais automatiser à l'aide d'un script bash les opération suivante : je... www.commentcamarche.net/forum/affich-3585516-creation-d-un-script-bash
Script bash avec iptables sous debianBonsoir, Je souhaite créer un script bash qui configure mon firewall avec la commande iptables. Mais le problème c'est que mon script exécute "mal" les commandes. Ce sont des scripts de testes pour expliquer le problème. ------------------------------... www.commentcamarche.net/forum/affich-9506307-script-bash-avec-iptables-sous-debian
Recuperation variable du php au script bashBonjour, jai un problem de recuperation de variable d'un formulaire php qui doivent servir dans l'execution d'un script en bash. j'appel le script bash à partir du scipt php par la methode POST. kel commande du bash me faut il pour recuperer les... www.commentcamarche.net/forum/affich-4153132-recuperation-variable-du-php-au-script-bash
PHP - Les variables d'environnementNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script... www.commentcamarche.net/contents/php/phpenv.php3
Variables d'environnementVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de certaines... www.commentcamarche.net/contents/systemes/variables-environnement.php3
CGI - Les variables d'environnementNotion de variable d'environnement Les variables d'environnement sont des données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement. Dans le cas du programme CGI, l'environnement est... www.commentcamarche.net/contents/cgi/cgienv.php3