2012-08-30 2 views
1

J'ai un script shell qui lance un programme python qui a ses propres paramètres:script shell prenant entrée du programme python

#!/bin/bash 
python blah.py var1 var2 
./run key 

Je dois trouver un moyen de récupérer le contenu de la clé du programme python. J'ai essayé juste faire le programme python retourne la valeur, et de faire ensuite:

key=python blah.py var1 var2 

dans mon script shell, mais cela ne fonctionne pas parce qu'il a déclaré clé était « en dehors de la fonction ».

Merci à l'avance

Répondre

2

Utilisez cette

key=`python blah.py var1 var2` 
./run $key 
+0

cela met juste la clé égale à python – user1553248

+2

Vraiment ?? J'espère que vous n'utilisez pas de guillemets simples, mais référez-vous ici si un problème persiste http://forums.opensuse.org/francais/autres-forums/development/programming-scripting/390664-how-can-i-redirect-stdout-variable .html – perilbrain

+0

Vous avez raison, mais je suppose qu'il y a quelque chose qui cloche dans ma logique ici. Je ne peux pas retourner une variable à partir de ce fichier python, car retourner la variable à partir des états principaux fait dire que "return" est en dehors de la fonction. Aucune suggestion? – user1553248

2

Vous pouvez faire:

./run $(python blah.py var1 var2) 

La syntaxe $() ouvre un sous-shell et exécute la commande. La sortie stdout est alors jeté à sa place

0

Une doublure démo:
(ok, il est donc deux lignes)

$ key=`python -c 'print "hi"'` 
$ echo $key 
0

Une autre alternative à la modification du script python pour sortir la valeur de la variable key est de modifier le script python pour appeler le programme run

import subprocess 
# ... calculations, and set the "key" variable ... 
subprocess.call(["./run", key]) 
Questions connexes