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

Receive a shell command as an OptionParser string argument

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

有没有好的方法来传递作为 shell 命令的 OptionParser 选项?

调用时:

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'