首页 > 解决方案 > 从 bash shell 脚本调用 Python 脚本

问题描述

我正在尝试实现一个命令,该命令涉及向POST/GET远程服务器发送请求并解释JSON格式结果。由于通过 解析 JSON 非常困难bash,我决定先编写 python 脚本并在 shell 脚本中调用它。

我的 shell 脚本现在看起来像这样

#!/bin/sh
case $1 in
  submit-job)
    python3 src/submit-job.py
    ;;
  lists-job)
    python3 src/lists-job.py
    ;;
  ....and so on
esac

我希望我的用户可以使用以下命令。

Job submit-job argument1 argument2...
Job lists-job
...and so on

基本上。我只有 1 个 Python 类文件,Job.py其中包括多个函数,例如submit-joblists-job. 但是,为了将不同的函数分隔到不同的命令参数,我必须创建单独的 python 文件来触发它。(喜欢submit-job.pylists-job.py)。

例如。提交作业.py

from Job import Job

j = Job()
j.submit_job()

列表-job.py

from Job import Job

j = Job()
j.lists_job()

如您所见,它们非常相似。有没有更好的方法或最佳实践来实现我想要的?

标签: pythonbashshell

解决方案


为什么不在 Python 中执行 if/else?

import sys
from Job import Job

j = Job()
arg = sys.argv[1]
if arg == 'submit-job':
    j.submit_job()
elif ...
    ...

现在您可以在 bash 脚本中调用它,传递参数,甚至已经删除 bash 脚本并直接从命令行调用 Python 脚本。


推荐阅读