簡體   English   中英

將bash輸出傳遞到python腳本時出現問題

[英]Problem passing bash output to a python script

我對編程還很陌生,因此我在互聯網上搜索了一種將bash輸出傳遞給Python腳本的方法。

我想到了這個。

XAS_SVN=`svn info` 
ssh hudson@test "python/runtests.py $XAS_SVN"

而這在python中。

import sys
print sys.argv[1]

當我echo $SVN_INFO ,得到結果。

路徑:。 網址:// svn / rnd-projects / testing / python信息庫根目錄:// svn / rnd-projects信息庫UUID:d07d5450-0a36-4e07-90d2-9411ff75afe9修訂:140節點種類:目錄日程:正常最近更改作者:Roy van der Valk上次更改時間:140上次更改日期:2009-06-09 14:13:29 +0200(星期二,2009年6月9日)

但是,python腳本僅顯示以下內容。

路徑:

為什么會這樣,我該如何解決呢? 我的$ SVN_INFO變量不是字符串類型嗎?

我知道子進程模塊和Popen函數,但是我認為這不是解決方案,因為python腳本在另一台服務器上運行。

由於變量中有空格,因此需要對其進行轉義或讀取腳本中的所有參數:

print ' '.join(sys.argv[1:])

但是最好使用stdin / stdout進行通信,尤其是在輸出中的某些shell易於理解的字符的情況下(例如“ $”),在python腳本中執行以下操作:

for l in sys.stdin:
     sys.stdout.write(l)

並在外殼中:

svn info | ssh hudson@test python/runtests.py

是的,您需要在python / runtest.py中用引號引起來,因為否則argv [1]僅將其保留到第一個空格。 像這樣:

ssh hudson@test "python/runtest.py \"$XAS_SVN\""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM