zhangblh 发表于 2014-08-27 15:13

关于python中嵌套shell命令的求助

shell命令如下:
ps -ef |grep tomcat | awk '{for(i=1;i<=NF;i++) print '\n' $i}' | grep 'Dcatalina.home' | awk -F '=' '{print $NF}'

在环境中执行是完全没有问题的,可是放到我的python脚本中,就会出现报错。先放上我的python脚本
cmd2=os.popen("""ps -ef |grep tomcat | awk '{for(i=1;i<=NF;i++) print '\n' $i}' | grep 'Dcatalina.home' | awk -F '=' '{print $NF}'""")
logpath=cmd2.readline().strip('\n')
print logpath

然后,执行的时候,会出现如下错误:
awk: cmd. line:1: {for(i=1;i<=NF;i++) print
awk: cmd. line:1:                           ^ unexpected newline or end of string
grep: write error: Broken pipe
sh: line 1:$i}: command not found

求教各位大神,我该如何修改?

Linux_manne 发表于 2014-08-27 15:34

本帖最后由 Linux_manne 于 2014-08-27 15:35 编辑

cmd=r'''......'''
os.system(cmd)

Linux_manne 发表于 2014-08-27 15:42

但是不推荐这种写法

最好用subprocess 这样你的shell 也可以不要用pipe 了
subprocess 可以将输出pipe 为 输入一步一步替换下去

zhangblh 发表于 2014-08-27 15:52

回复 3# Linux_manne


    多谢!我试试!

q1208c 发表于 2014-08-27 17:03

都 python了, 还要这么多 shell 命令进来干嘛?

直接 用 os 的mod 不行?
页: [1]
查看完整版本: 关于python中嵌套shell命令的求助