J'ai une fonction Python, FOOPY () qui retourne une certaine valeur. (int / double ou chaîne)
Je veux utiliser cette valeur et l'attribuer dans un script shell. Par exemple, après la fonction Python: P>
fooShell = python fooPy.py #fooShell = $(python fooPy.py) #fooShell = echo "$(python fooPy.py)"
4 Réponses :
Vous pouvez imprimer votre valeur en python, comme ceci: et dans votre script shell: p> Soyez sûr de ne pas laissez des espaces autour du = code> dans le script shell. p> p>
Merci, ça a fonctionné! J'ai aussi commis une erreur en mettant des espaces autour =. Tellement fixé cela aussi.
+1 Pour mentionner "Assurez-vous de ne pas laisser d'espaces autour de la = dans le script shell", il agace l'enfer de la recrue comme moi.
Vous devriez Imprimer code> la valeur renvoyée par FOOPY code>. La substitution de shell se lit de stdout. Remplacez la dernière ligne de votre programme avec Imprimer FOOPY () CODE>, puis utilisez le deuxième pipeline Shell que vous avez mentionné. Cela devrait fonctionner. P>
Dans votre code Python, vous devez imprimer le résultat.
fooShell=$(python fooPy.py) # note no space around the '='
+ 1 Pour une réponse détaillée et des notes sur sys.stdout.write (), il est utile. Merci!
Brillant. Exactement ce que je cherchais
Si vous souhaitez la valeur de l'instruction Python sys.exit code>, il sera dans la variable spéciale shell $? code>. $ var=$(foo.py)
$ returnval=$?
$ echo $var
Some string
$ echo returnval
10
+1 pour pointer le moyen d'obtenir le code de terminaison ... mais laissez-moi réparer un petit détail.
Merci pour le correctif (tels sont les dangers de travail dans plusieurs langues).
hmm..Ce fait appel à "impression_val" inutile (pas encore essayé). Merci, ceci est une information utile. +1.
Merci d'avoir mentionné le Sys.exit () / $? lien. C'est ce que je cherchais.