2010-05-09 169 views
1

我該如何將一個Python變量傳遞給Bash shell?它應該是這樣的: foo="./RetVar.py 42"如何將Python變量傳遞給Bash?

用'替換雙引號小號

我曾嘗試印刷和sys.exiting的結果,但無濟於事。我將如何實現我的目標?

回答

8
foo="$(scriptthatprintssomething)" 

就是這樣。 print。或者sys.stdout.write()。或者類似的。如果腳本不可執行,那麼您需要明確指定解釋器。

foo="$(python scriptthatprintssomething.py)" 
0

你想要的形式工作得很好:

$ cat >Retvar.py 
#!/usr/bin/python 
import sys 
print sys.argv[1] 
$ chmod +x RetVar.py 
$ foo=`./RetVar.py 42` 
$ echo $foo 
42 
$ 

所以想必你曾試圖打印的方式是不正確的。 (這與使用舊式backquotes或更新式的構造(如$())相當獨立)。如果你仍然有這個問題,你能向我們展示一下Python代碼的最簡單的例子來重現它,幫助我們幫助你嗎?

0

在bash中``cmd \和$(cmd)將被命令的輸出替換。這可以讓你的程序的輸出分配給一個變量像

foo=`some command` 

foo=$(some command) 

通常你用雙引號把這個包,所以你可以在你的輸出有空格。它必須是雙引號,因爲單引號內的東西不會被執行。