Variable d'environnement et script bash
Fermé
SkillEx
-
25 juin 2013 à 11:58
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 25 juin 2013 à 16:23
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 25 juin 2013 à 16:23
A voir également:
- Variable d'environnement et script bash
- Script vidéo youtube - Guide
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Windows 7
- List bash ✓ - Forum Shell
- Vba range avec variable ✓ - Forum VB / VBA
5 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 juin 2013 à 12:47
25 juin 2013 à 12:47
hello
l'export ne va que dans un sens, du processus père aux processus enfants. Une fois modifiée, la variable disparait quand la tâche termine.
donc si cmd2 est exécuté depuis cmd1, les variables exportées par cmd1 seront visibles dans cmd2, mais si elles sont modifiées, cmd1 ne les verra pas.
l'export ne va que dans un sens, du processus père aux processus enfants. Une fois modifiée, la variable disparait quand la tâche termine.
donc si cmd2 est exécuté depuis cmd1, les variables exportées par cmd1 seront visibles dans cmd2, mais si elles sont modifiées, cmd1 ne les verra pas.
Merci pour la réponse.
C'est embêtant.
Comment faire pour que la fonction puisse retourner une valeur du coup ?
C'est embêtant.
Comment faire pour que la fonction puisse retourner une valeur du coup ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 25/06/2013 à 14:03
Modifié par dubcek le 25/06/2013 à 14:03
une fonction ne créée pas un shell donc si la fonction est dans le script, ça fonctionne
$ export x=1 $ ddate () { date ; export x=2 ; } $ echo $x 1 $ ddate Tue Jun 25 13:43:41 CEST 2013 $ echo $x 2 $l'export est inutile puisqu'on reste dans la même tâche
En effet l'exemple marche.
Dans mon script ça marche aussi à présent.
Merci beaucoup, ça fesait un paquet de temps que ces variables globale me faisait la vie dure .
Question subsidiaire : ça ne marchait pas, par contre, lorsque la fonction était appelée de cette façon
retour=$(maFonction arg1 arg2)
alors que la valeur était modifiée avec un export phrase="blabla" dans maFonction.
Mais ça marche directe en modifiant pour
maFonction arg1 arg2
Est-ce que tu sais pourquoi ?
Dans mon script ça marche aussi à présent.
Merci beaucoup, ça fesait un paquet de temps que ces variables globale me faisait la vie dure .
Question subsidiaire : ça ne marchait pas, par contre, lorsque la fonction était appelée de cette façon
retour=$(maFonction arg1 arg2)
alors que la valeur était modifiée avec un export phrase="blabla" dans maFonction.
Mais ça marche directe en modifiant pour
maFonction arg1 arg2
Est-ce que tu sais pourquoi ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 juin 2013 à 16:23
25 juin 2013 à 16:23
retour=$(maFonction arg1 arg2)pour que ceci fonctionne, il faut dans la fonction : echo $phrase
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 juin 2013 à 14:35
25 juin 2013 à 14:35
en exécutant avec $(..) le shell crée une autre tâche et donc son environnement est perdu
$ x=1 $ ddate () { date ; x=2 ; } $ d=$(ddate) $ echo $d Tue Jun 25 14:30:39 CEST 2013 $ echo $x 1 $ ddate Tue Jun 25 14:34:25 CEST 2013 $ echo $x 2 $