接收shell命令作为OptionParser字符串参数

时间:2016-10-04 18:25:57

标签: python shell optionparser

我正在使用OptionParser(),并定义以下内容:

parser.add_option("--cmd", dest="command", help="command to run")

但是,如果我提供复杂的shell命令,例如:

python shell.py --cmd "for i in `seq 1 10`; do xxx; done"

在内部打印options.command,我得到一些意想不到的东西:

for i in 1
2
3
4
5
6
7
8
9
10; do

有没有一种传递OptionParser选项的好方法,这是一个shell命令?

1 个答案:

答案 0 :(得分:1)

调用时:

python shell.py --cmd "for i in `seq 1 10`; do xxx; done"

shell首先用`输出替换`中包含的命令。因此,您实际调用的命令是:

python shell.py --cmd "for i in 1
2
3
4
5
6
7
8
9
10; do ..."

为避免这种情况:

调用命令时转义`字符:

python shell.py --cmd "for i in \`seq 1 10\`; do xxx; done"

使用强引号('中包含的字符串)

python shell.py --cmd 'for i in `seq 1 10`; do xxx; done'