将参数传递给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脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 docker run 将参数传递给 Shell 脚本
如何将多个参数传递给 shell 脚本到`kubectl exec`?