考虑以下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
,但是我想从内部运行script.py
Shell脚本,并可以传递-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
,但无济于事。
答案 0 :(得分:3)
您需要告诉bash
脚本将其参数传递给script.py
:
#!/bin/bash
python script.py "$@"
您的脚本忽略了自己的参数,而没有任何参数地运行script.py
。