0

我正在使用 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"

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

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

有没有一种好方法可以传递作为 shell 命令的 OptionParser 选项?

4

1 回答 1

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'
于 2016-10-04T18:41:16.503 回答