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

问题描述 投票:0回答:1

考虑以下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,但无济于事。

python shell
1个回答
3
投票

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

#!/bin/bash

python script.py "$@"

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

© www.soinside.com 2019 - 2024. All rights reserved.