将参数传递给shell脚本中包含的Python脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将参数传递给shell脚本中包含的Python脚本相关的知识,希望对你有一定的参考价值。

考虑以下Python脚本script.py:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-a', type=int)
parser.add_argument('-b', type=int)

args = parser.parse_args()

print('a + b = {}'.format(args.a + args.b))

以下shell脚本,runner.sh:

python3 script.py

我知道我可以像这个$ python3 script.py -a 4 -b 6一样运行script.py来获得以下结果:a + b = 10,但我想从shell脚本中运行script.py,并且能够传递-a-b,如下所示:./runner.sh -a 4 -b 6。但是,当我尝试这个时,这些参数不会传递:

$ ./runner.sh -a 10 -b 6
Traceback (most recent call last):
  File "script.py", line 10, in <module>
    print('a + b = {}'.format(args.a + args.b))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

如何将参数传递给包含在shell脚本中的Python脚本?为了它的价值,我也尝试了sys.argv,但无济于事。

答案

你需要告诉bash脚本将其参数传递给script.py

#!/bin/bash

python script.py "$@"

你的脚本忽略了自己的参数,并运行没有参数的script.py

以上是关于将参数传递给shell脚本中包含的Python脚本的主要内容,如果未能解决你的问题,请参考以下文章

将参数传递给输入文件的 shell 脚本

如何通过 docker run 将参数传递给 Shell 脚本

如何将多个参数传递给 shell 脚本到`kubectl exec`?

如何将命令行参数传递给 spark-shell scala 脚本?

Snakemake:将命令行参数传递给脚本。

使用 argparse 将 Shell 参数传递给 Boto3 Python