加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从Shell脚本向Python传递参数

发布时间:2020-12-16 01:49:37 所属栏目:安全 来源:网络整理
导读:我写了一个小 shell脚本,看起来像这样: cd models/syntaxnetvar1=$(jq --raw-output '.["avl_text"]' | syntaxnet/demo.sh)echo $var1python /home/sree/python_code1.py $var1 我的python_code1.py看起来像这样: import sysdata = sys.argv[1]print "In p
我写了一个小 shell脚本,看起来像这样:

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

我的python_code1.py看起来像这样:

import sys

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

现在,我的shell脚本中echo $var1的输出正是我想要看到的:

1检查_ VERB VB _?? 0 ROOT _ _ 2 out _ PRT RP _ 1 prt _ _ 3 this _ DET DT _ 4 det _ _ 4 video _ NOUN NN _ 1 dobj _ _ 5 about _ ADP IN _ 4 prep _ _ 6西北_NUNN NNP _ 7 nn _ _ 7阿肯色州_NUNN NNP _ 5 pobj _ _ 8 – _.,_ 7 punct _ _ 9 https _ X ADD _ 7 appos _ _

但是python代码中的打印数据输出只是1.即参数的第一个字母.

为什么会这样?我想将整个字符串传递给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"

python代码的内容(dsp.py):

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

输出:

[root@dsp-centos ~]# sh a.sh
In python code
Dinesh Pundkar

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读