2012-05-07 113 views
3

我試圖執行shell命令,然後使用shell腳本將輸出保存到變量中。所以我用反引號這樣的:shell腳本無法將命令行輸出保存到變量中

out=`ls -l` 
print $out 

代碼工作正常,我可以將其用於任何其他shell命令,但是當我嘗試做「蟒蛇--version」來檢查Python版本。我有一個奇怪的問題。反引號對於「python --version」命令不起作用,而對任何其他命令都可以正常工作,它將輸出打印到屏幕上並且不會將任何內容保存到變量$ out中。所以,如果我做的:

out =`python --version` 
print "my python version is "$out 

結果:

Python 2.6.1 
my python version is 

還我試圖用$()來代替反引號,但沒有運氣。任何想法 ?

+1

乾貨是老式的做法。使用$()更可讀。 – OlivierLi

回答

10

你有你的平等之間有一個空格登陸:

out =`python --version` 

應該是:

out=`python --version` 

更新

而且蟒蛇輸出版本字符串到標準錯誤,所以你需要將其重定向到標準輸出:

out=`python --version 2>&1` 
+2

perfecto,非常感謝。現在它工作正常。就像你說的,問題是python輸出到stderr。 out = \''python --version 2>&1 \'!感謝名單。 – andio

+0

我正在編寫一個預先提交的鉤子,也無法弄清楚爲什麼輸出沒有被保存。你的2&1技巧效果很好!謝謝! – NateW

相關問題