0
J'essaie d'utiliser une variable d'environnement dans un cmd de sous-processus appelé par python.Sous-processus python env var dans la commande
J'ai essayé
myvar="myval"
echo $myvar
>>myval
python3:
import os
import subprocess
from subprocess import PIPE
env_vars = dict(os.environ)
task_cmd = "echo $myvar/stuff"
sp = subprocess.Popen(task_cmd, shell=True, stdout=PIPE, stderr=PIPE, universal_newlines=True, env=env_vars)
sp.communicate()
out:
>> ('/stuff\n', '')
Comment puis-je faire que ma sortie est ('myval/stuff\n', '')
Merci!
J'ai besoin que dans la commande elle-même, je ne suis pas besoin d'être à la disposition du processus enfant. Je pensais en fait que l'OS ferait la substitution plutôt que Python. Je pense que votre première réponse était ce que je cherchais, comme vous avez raison, je peux simplement faire le formatage en python. – AdrianBR
Il n'y a pas de processus fils appelé 'echo' ... vous exécutez en gros le shell par défaut, qui est un processus fils des processus python, et si vous voulez qu'il soit capable d'interpoler une variable, vous devez la transmettre. –
Ah, je comprends! Je n'ai pas réalisé que le shell n'avait pas les variables d'environnement disponibles s'il n'était pas passé – AdrianBR