我想运行一个 python 程序,它将一个句子作为 bash shell 提示符下的命令行参数。
我试过以下两种方式,一种有效,另一种无效,为什么会这样?两种方式都应该有效。
为什么第一种方式报错?
提前致谢
test.py 只打印参数。公司名称
sumanth@sumanth:~$ cat test.py
import os
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('-co',action='store',dest='co',default='aa')
results = parser.parse_args()
co = results.co
print co
sumanth@sumanth:~$
sumanth@sumanth:~$
sumanth@sumanth:~$
sumanth@sumanth:~$ cmd='python test.py -co "\"ABC Networks"\"'
sumanth@sumanth:~$
sumanth@sumanth:~$ $cmd
usage: test.py [-h] [-co CO]
test.py: error: unrecognized arguments: Networks"\"
sumanth@sumanth:~$
sumanth@sumanth:~$
sumanth@sumanth:~$
sumanth@sumanth:~$
sumanth@sumanth:~$ python test.py -co "\"ABC Networks"\"
"ABC Networks"
sumanth@sumanth:~$
sumanth@sumanth:~$
最佳答案
为什么要尝试将命令保存在 $cmd 中?如果您改用脚本,则可以使用 "$@" 传递参数:
运行测试.sh:
#!/bin/bash
python "$@"
结果:
$ ./runTest.sh test.py "ABC Networks"
Number of arguments: 3 arguments.
Argument List: ['test.py', '-co', 'ABC Networks']
否则你可以尝试使用 eval:
$ cmd='python test.py -co "ABC Networks"'
$ eval $cmd
Number of arguments: 3 arguments.
Argument List: ['test.py', '-co', 'ABC Networks']
关于python - 如何从 bash shell 提示符运行带有句子作为命令行参数的 python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037863/