从Shell脚本向Python传递参数

从Shell脚本向Python传递参数,python,shell,arguments,Python,Shell,Arguments,我编写了一个小shell脚本,如下所示: cd models/syntaxnet var1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh) echo $var1 python /home/sree/python_code1.py $var1 import sys data = sys.argv[1] print "In python code" print data print type(data) 我的python\u cod

我编写了一个小shell脚本,如下所示:

cd models/syntaxnet
var1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh)
echo $var1
python /home/sree/python_code1.py $var1
import sys

data = sys.argv[1]
print "In python code"
print data
print type(data)
我的
python\u code1.py
如下所示:

cd models/syntaxnet
var1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh)
echo $var1
python /home/sree/python_code1.py $var1
import sys

data = sys.argv[1]
print "In python code"
print data
print type(data)
现在,我的shell脚本中echo$var1的输出正是我想要看到的:

1检查动词VB\u0 ROOT\uuu2 out\uprt RP\u1 PRT\uuu3这个DET DT\uu4 DET\u4 video\u1 dobj\u5关于阿肯色州西北部的ADP7点播9 https添加7预约

但是在python代码中,
print data
的输出只是
1
。i、 论证的第一个字母


为什么会这样?我想把整个字符串传递给python代码。

如果参数和参数之间有空格不在引号中,那么Python考虑为两个不同的参数。

这就是为什么python代码中打印数据的输出只有1

检查以下输出

[root@dsp-centos ~]# python dsp.py Dinesh Pundkar
In python code
Dinesh
[root@dsp-centos ~]# python dsp.py "Dinesh Pundkar"
In python code
Dinesh Pundkar
[root@dsp-centos ~]#
因此,在shell脚本中,将$var1放在引号中。

shell脚本(a.sh)的内容:

var1="Dinesh Pundkar"
python dsp.py "$var1"
[root@dsp-centos ~]# sh a.sh
In python code
Dinesh Pundkar
python代码的内容(dsp.py)

import sys
data = sys.argv[1]
print "In python code"
print data
输出:

var1="Dinesh Pundkar"
python dsp.py "$var1"
[root@dsp-centos ~]# sh a.sh
In python code
Dinesh Pundkar

使用联接和列表切片

import sys
data = ' '.join(sys.argv[1:])
print "In python code"
print data
print type(data)