从 bash shell 脚本调用 Python 脚本 [重复]

     2023-03-07     135

关键词:

【中文标题】从 bash shell 脚本调用 Python 脚本 [重复]【英文标题】:Call Python script from bash shell script [duplicate] 【发布时间】:2019-10-31 11:36:28 【问题描述】:

我正在尝试实现一个命令,该命令涉及将POST/GET 请求发送到远程服务器并解释JSON 格式结果。由于通过bash解析JSON相当困难,所以我决定先编写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

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

例如。 提交作业.py

from Job import Job

j = Job()
j.submit_job()

lists-job.py

from Job import Job

j = Job()
j.lists_job()

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

【问题讨论】:

python job-tools.py submit,然后让您的 Python 脚本检查其命令行参数。 (更好的是,让 distutils/setuptools 创建一个可执行包装器,然后它只是 job-tools submit,不需要显式调用 python 解释器)。 一种常见的技术是拥有一个包含多个链接的文件,然后让程序检查 $0。 @WilliamPursell, ...或者,在 Python 的意义上,检查 sys.argv[0] 谢谢!我去看看 distutils 【参考方案1】:

为什么不在 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 脚本。

【讨论】:

这是一个我没有想过的好方法。谢谢!

使用 Git Bash 从 Shell 脚本调用批处理脚本

】使用GitBash从Shell脚本调用批处理脚本【英文标题】:CallBatchScriptfromShellScriptusingGitBash【发布时间】:2015-05-1703:30:53【问题描述】:我有一个批处理脚本(master.bat),它调用了许多批处理脚本。Master.bat:calla.batcallb.batcallc.bat调... 查看详情

无法从 bash shell 脚本执行 Tcl 脚本

】无法从bashshell脚本执行Tcl脚本【英文标题】:Tclscriptcannotbeexecutedfrombashshellscript【发布时间】:2011-10-2106:34:33【问题描述】:我对bashshell脚本和tcl脚本有一个比较奇怪的问题,从shell脚本中调用。从角度来看,我有一个shell脚本... 查看详情

管道到头部导致从 python 调用的 shell 脚本中的管道损坏

】管道到头部导致从python调用的shell脚本中的管道损坏【英文标题】:Pipingtoheadresultsinbrokenpipeinshellscriptcalledfrompython【发布时间】:2016-01-0608:51:19【问题描述】:我要运行一个命令来生成随机字符串:var=`</dev/urandomtr-dc_A-Z-a-z-0-... 查看详情

如何避免从 Bash 脚本中多次调用 Python 解释器?

】如何避免从Bash脚本中多次调用Python解释器?【英文标题】:HowcanIavoidcallingPythoninterpretermanytimesfromaBashscript?【发布时间】:2017-03-0904:15:56【问题描述】:我正在处理一个涉及两个主要组件的项目,一个带有Bash命令行界面,另一... 查看详情

如何避免从 Bash 脚本中多次调用 Python 解释器?

】如何避免从Bash脚本中多次调用Python解释器?【英文标题】:HowcanIavoidcallingPythoninterpretermanytimesfromaBashscript?【发布时间】:2017-03-0904:15:56【问题描述】:我正在处理一个涉及两个主要组件的项目,一个带有Bash命令行界面,另一... 查看详情

如何从 python 代码调用 shell 脚本?

】如何从python代码调用shell脚本?【英文标题】:Howtocallashellscriptfrompythoncode?【发布时间】:2011-04-1604:37:23【问题描述】:如何从python代码调用shell脚本?【问题讨论】:【参考方案1】:subprocess模块将为您提供帮助。明显微不足... 查看详情

如何从需要 SUDO 的 php 调用 shell 脚本?

】如何从需要SUDO的php调用shell脚本?【英文标题】:HowtocallshellscriptfromphpthatrequiresSUDO?【发布时间】:2011-03-1102:47:15【问题描述】:我有一个需要SUDO才能工作的bash脚本文件。我可以使用SUDO从命令行运行它,但系统会提示我输入S... 查看详情

在 bash shell 脚本中传播所有参数

】在bashshell脚本中传播所有参数【英文标题】:Propagateallargumentsinabashshellscript【发布时间】:2011-03-1213:46:20【问题描述】:我正在编写一个调用另一个脚本的非常简单的脚本,我需要将参数从我当前的脚本传播到我正在执行的脚... 查看详情

从 shell 调用 python 脚本,但将配置文件的位置作为参数传递

】从shell调用python脚本,但将配置文件的位置作为参数传递【英文标题】:Callingapythonscriptfromshellbutpassingthelocationofconfigfileasaparameter【发布时间】:2018-12-2022:44:06【问题描述】:如何从python脚本(Ubuntushell)调用函数,同时传递配... 查看详情

Automator bash shell 脚本问题

】Automatorbashshell脚本问题【英文标题】:Automatorbashshellscripttrouble【发布时间】:2015-04-0423:47:46【问题描述】:我可能在这里遗漏了一些非常简单的东西,但是我在构建运行bashshell脚本的自动化服务时遇到了麻烦。插入shell时,脚... 查看详情

如何在 bash shell 脚本中的 perl 命令调用中使用 shell 变量?

】如何在bashshell脚本中的perl命令调用中使用shell变量?【英文标题】:Howtouseshellvariablesinperlcommandcallinabashshellscript?【发布时间】:2012-10-1702:52:04【问题描述】:如何在bashshell脚本的perl命令调用中使用shell变量?我的shell脚本中有... 查看详情

从 shell 脚本 (bash) 的参数列表中删除最后一个参数

】从shell脚本(bash)的参数列表中删除最后一个参数【英文标题】:Removelastargumentfromargumentlistofshellscript(bash)【发布时间】:2013-12-2207:19:13【问题描述】:这个问题涉及在automatorosx中运行的bash脚本。我正在使用自动操作从查找器中... 查看详情

如何从调用 bash 的 Tcl 脚本验证密码?

】如何从调用bash的Tcl脚本验证密码?【英文标题】:HowtoauthenticatepasskeyfromaTclscriptcallingbash?【发布时间】:2011-03-0206:11:23【问题描述】:我有一个tcl脚本,它从bash调用很多函数,包括ssh。我正在努力的部分如下所示:procconnectwhe... 查看详情

使用 bash 脚本时使用文件名参数调用 Python 脚本

】使用bash脚本时使用文件名参数调用Python脚本【英文标题】:CallPythonscriptwithfilenameargumentwhenusingbashscript【发布时间】:2021-04-0318:06:38【问题描述】:我正在尝试通过调用我的Python脚本的BashShell脚本(csv)运行我的Python脚本(csv_builde... 查看详情

如何从 Mac 上的 bash 脚本调用 ./snowsql 文件?

】如何从Mac上的bash脚本调用./snowsql文件?【英文标题】:Howtocall./snowsqlfilefromabashscriptonMac?【发布时间】:2019-12-1821:48:16【问题描述】:我正在尝试从bash脚本建立连接,完成类似于以下的操作:rmcguigan$snowsql--filenametest.sql*SnowSQL*v... 查看详情

从 C# Windows 窗体内部调用的 Bash 脚本

】从C#Windows窗体内部调用的Bash脚本【英文标题】:BashScriptcalledfrominsideC#WindowsForms【发布时间】:2022-01-1714:14:05【问题描述】:我正在尝试从Windows窗体应用程序中运行bash脚本。我的代码如下所示://CommandStringstringflashNVS="c:\\\\msys... 查看详情

在 bash 脚本中嵌入简短的 python 脚本

】在bash脚本中嵌入简短的python脚本【英文标题】:embeddingshortpythonscriptsinsideabashscript【发布时间】:2021-12-0706:21:09【问题描述】:我想将短python脚本的文本嵌入到bash脚本中,例如我的.bash_profile。做这种事情的最佳方法是什么?... 查看详情

从 bash 脚本向 python 传递参数

】从bash脚本向python传递参数【英文标题】:Passargumentstopythonfrombashscript【发布时间】:2018-03-0323:58:57【问题描述】:我一直在编写bash和python脚本的混合脚本。bash脚本可以接收未知计数输入参数。例如:tinify.shtest1.jpgtest2.jpgtest3.j... 查看详情