我正在使用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命令?
答案 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'