Bash passer une variable d'un scrip a l'autre
xunil2003
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrai savoir comment faire passer une variable du script1.sh au script2.sh
Dans le script1.sh j'ai mis :
Sans le script2.sh j'ai mis :
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.
Pouvez vous m'aider avec un exemple.
Merci.
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.
A voir également:
- Bash passer une variable d'un scrip a l'autre
- Passer de qwerty a azerty - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Passer de majuscule à minuscule - Guide
- Passer à windows 11 gratuitement - Guide
- Bingo bash - Télécharger - Divers Jeux
2 réponses
Salut,
Le plus simple est de sourcer ton script1.sh depuis ton script2.sh :
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
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"
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.
ou
merci.
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=cm15ademoetc...
merci.
Je n'ai pas trop bien compris source.
man bash
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
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