2014-11-25 129 views
0

我有一个python脚本。这只是我转换到我的shell脚本,对不起,我只是这个语言的新手。错误是:SyntaxError:无效语法Python

File "chkrpm.py", line 19 
    if(rc != 0): 
    ^
SyntaxError: invalid syntax 

我不知道什么是错的。这是我的shell脚本

retval=0 
for i in $(cat /var/tools/tools/newrpms.txt) 
do 
     ls /var/patchbundle/rpms/ | grep $i 
     if [ $? != 0 ] 
     then 
       echo "$i NOT FOUND!" 
       retval=255 
     fi 
done 
exit $retval 

这是我的python转换。只关注错误方面。

import package, sys, os, subprocess 

path = '/var/tools/tools/newrpms.txt' 

newrpms = open(path, "w") 
fds = newrpms.readline() 
newrpms.close 


def checkrc(rc): 
       if(rc != 0): 
         sys.exit(rc) 
cmd = package.Errata() 
retval=0 


for i in newrpms: 
     rc = cmd.execute("ls /var/patchbundle/rpms/ | grep %newrpms ") 
       if(rc != 0): 
        cmd.logprint ("%s not found !" % i) 
        retval = 255 

checkrc(rc) 

我的代码有什么问题。这是适合我的bash脚本?

当我试图按照以下错误所有的建议中发现:

File "chkrpm.py", line 19 
    echo("%s not found !" % i) 
    ^
SyntaxError: invalid syntax 
+0

注意:'newrpms.close'不会做任何事情。如果你想关闭文件,你需要调用函数:'newrpms.close()':-)。 – mgilson 2014-11-25 03:31:37

+0

您正在以写入模式打开文件并尝试从中读取文件。将open改为'newrpms = open(path,“r”)' – nu11p01n73R 2014-11-25 03:51:34

+0

尝试使用'print'而不是'echo' – 2014-11-25 04:11:30

回答

0

您的错误信息说'无效语法”,因为你的intendation是错误的

您的for循环看起来像:

for i in newrpms: 
     rc = cmd.execute("ls /var/patchbundle/rpms/ | grep %newrpms ") 
       if(rc != 0): 
        cmd.logprint ("%s not found !" % i) 
        retval = 255 

当它看起来像:

for i in newrpms: 
    rc = cmd.execute("ls /var/patchbundle/rpms/ | grep %newrpms ") 
    if(rc != 0): 
     cmd.logprint ("%s not found !" % i) 
     etval = 255 
相关问题