Bash passer une variable d'un scrip a l'autre

Fermé
xunil2003 Messages postés 765 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 5 septembre 2024 - Modifié par xunil2003 le 28/06/2012 à 13:13
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 28 juin 2012 à 13:58
Bonjour,

Je voudrai savoir comment faire passer une variable du script1.sh au script2.sh

Dans le script1.sh j'ai mis :
#!/bin/bash 
EXPORT PROGRAMME=Asterisk


Sans le script2.sh j'ai mis :
#!/bin/bash 
echo "$date2 - $utilisateur - $execution1 - $executable - $PROGRAMME" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log


Mais ca ne marche pas, je n'arrive pas a exporter la variable du script1.sh et à la récupérer sur le script2.sh.

quand je tape "export" dans le terminal pour vérifier si la variable a bien etait exporté elle n'y est pas.
serveur@debian:~$ export 
declare -x DISPLAY="localhost:10.0" 
declare -x HOME="/home/serveur" 
declare -x LANG="fr_FR.UTF-8" 
declare -x LOGNAME="serveur" 
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:" 
declare -x MAIL="/var/mail/serveur" 
declare -x OLDPWD 
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/serveur/scripts:/home/serveur/Domotique/ordres" 
declare -x PWD="/home/serveur" 
declare -x SHELL="/bin/bash" 
declare -x SHLVL="1" 
declare -x SSH_CLIENT="192.168.0.2 53712 22" 
declare -x SSH_CONNECTION="192.168.0.2 53712 192.168.0.1 22" 
declare -x SSH_TTY="/dev/pts/0" 
declare -x TERM="xterm" 
declare -x USER="serveur" 
serveur@debian:~$ 


Pouvez vous m'aider avec un exemple.

Merci.

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
28 juin 2012 à 13:16
Salut,

Le plus simple est de sourcer ton script1.sh depuis ton script2.sh :

#!/bin/bash 
source /chemin/script1.sh
echo "$date2 - $utilisateur - $execution1 - $executable - $PROGRAMME" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log
0
xunil2003 Messages postés 765 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 5 septembre 2024 14
28 juin 2012 à 13:51
Bonjour,

Je n'ai pas trop bien compris source.

J'ai plusieurs programme pour executer la domotique.
j'ai donc créer un log pour savoir quel est le nom du programme qui a executé l'ordre domotique.
donc le plus simple est que je puisse récuperer le nom du programme dans le script2.sh qui ecrit dans le log les ordres domotique executé en indiquant de quel programme cela vient avec "$PROGRAMME"
echo "$date2 - $utilisateur - $execution1 - $executable - $PROGRAMME" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log

Le problème est que je ne peut pas indiquer toute les "source" des scripts bash.
il y a asterisk, cm15demo, etc...
voila pourquoi dans les scripts qui export la variable je veut pouvoir définir le non du programme.
#!/bin/bash 
EXPORT PROGRAMME=Asterisk

ou
#!/bin/bash 
EXPORT PROGRAMME=cm15ademo
etc...

merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
28 juin 2012 à 13:58
Je n'ai pas trop bien compris source.
man bash

. fichier [arguments]
source fichier [arguments]

Lire et exécuter les commandes contenues dans fichier avec l'environnement de l'interpréteur courant, puis renvoyer l'état final de la dernière commande exécutée dans fichier.

En gros c'est comme si tu écrivais noir sur blanc "PROGRAMME=Asterisk" ou "PROGRAMME=cm15ademo" dans ton scrip2.sh.

Toutes les variables déclarées dans scrip1.sh seront interprétées et reconnues par script2.sh
0