首页 > 解决方案 > 如何通过bash脚本执行需要命令行参数的python脚本?

问题描述

我有wlst.sh调用 python 脚本的 oracle 的 bash 脚本。这个 python 脚本需要命令行参数。

/somewhere/oracle/Middleware/wlsserver_10.3/common/bin/wlst.sh /path/foo.py -a aaa -b bbb

我意识到它只执行wlst.sh而不是foo.py如果我传递命令行参数。如果我不传递命令行参数,则foo.py执行。我试图包装整个 python 脚本调用,double-quote但这并没有起到任何作用。我可以使用什么正确的语法?

更新:

wlst.sh是来自 oracle 套件的给定脚本。这里是foo.py。我现在不对传入的参数做任何事情。如果我connectToAdmin()只保留而不传递任何参数,则print "Successfully connected"打印,但是如果我包含main(sys.argv)方法,则foo.py永远不会执行。

import sys, getopt

def usage():
   print "usage: foo.py -a aaa -b bbb"
   sys.exit(2)

def connectToAdmin():  
  try:
    connect(<username>,<passwd>,"t3://fooServer:<port>")
    print "Successfully connected"    
  except WLSTException, we:
    print "Unable to connect to administration server.."
    sys.exit(2)

# Parse command line arguments
def main(argv):   
   unixOptions = "ha:b:"
   gnuOptions = ["help","bar","boo"]   
   boo = ""
   bar = ""
   try:
      opts, args = getopt.getopt(argv[1:], unixOptions, gnuOptions)
   except getopt.GetoptError, err:
      print str(err)
      usage()                  
   for o, a in opts:
      if o in ("-h", "--help"):
         usage()         
      elif o in ("-a", "--bar"):
         boo = a                 
      elif o in ("-b", "--boo"):
         bar = a

   connectToAdmin()

if __name__ == "__main__":
   main(sys.argv)

标签: pythonbash

解决方案


推荐阅读