我对编程很新,我在互联网上搜索了一种将bash输出传递给Python脚本的方法。
我在bash中想出了这个。
XAS_SVN=`svn info`
ssh hudson@test "python/runtests.py $XAS_SVN"
这是在python中。
import sys
print sys.argv[1]
当我echo $SVN_INFO
时,我得到了结果。
路径:。网址: // SVN / RND项目/测试/蟒蛇 存储库根目录: // svn / rnd-projects存储库 UUID: d07d5450-0a36-4e07-90d2-9411ff75afe9 版本:140节点种类:目录 时间表:正常上次更改作者: Roy van der Valk Last Changed Rev:140 最后更改日期:2009-06-09 14:13:29 + 0200(2009年6月9日星期二)
然而,python脚本只打印以下内容。
路径:
为什么会这样,我该如何解决这个问题?我的$ SVN_INFO变量不是字符串类型?
我知道子进程模块和Popen函数,但我不认为这是一个解决方案,因为python脚本在另一台服务器上运行。
答案 0 :(得分:1)
由于变量中有空格,因此需要转义它们或读取脚本中的所有参数:
print ' '.join(sys.argv[1:])
但是使用stdin / stdout进行通信可能会更好,特别是如果某些字符容易被输出中的shell解释(例如“$”)。 在python脚本中执行:
for l in sys.stdin:
sys.stdout.write(l)
并在shell中:
svn info | ssh hudson@test python/runtests.py
答案 1 :(得分:0)
是的,您需要在python / runtest.py中输入引号,否则argv [1]只能将其输入到第一个空格。像这样:
ssh hudson@test "python/runtest.py \"$XAS_SVN\""