考虑以下 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
我知道我可以像这样运行script.py$ python3 script.py -a 4 -b 6
以获得以下结果:a + b = 10
,但我想script.py
从 shell 脚本中运行,并且能够像这样传递-a
and -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
没有参数的情况下运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句