python - 如何通过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)
解决方案
推荐阅读
- c# - 我必须在 dotnet core 2.0 中使用 HttpPost 更新 SQL 值
- android-studio - 这个右下角有一组三个竖条的 Android 文件夹图标是什么?
- c# - C#。错误 CS8135:具有 2 个元素的元组无法转换为类型“对象”
- php - SQL + PHP 显示多维数组
- javascript - 按点击的顺序打印所有按钮 Javascript
- javascript - Webpack 仅将变量注入 HTML
- c++ - 从 c++ 中的实例化进程获取输出的可靠方法是什么?
- google-maps - Flutter 视图在 map_view 中的当前视图下方打开
- python - 无法使用线程以正确的方式执行我的脚本
- sql - 连接 2 个表:[A] 中的 1 行与 [B] 中的多个可能行不匹配