接收外壳命令作为OptionParser字符串参数
问题描述:
我使用OptionParser(),并定义如下:接收外壳命令作为OptionParser字符串参数
parser.add_option("--cmd", dest="command", help="command to run")
然而,如果我提供了一个复杂的外壳命令,如:
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"
壳第一替代封闭在`与它的输出的命令。因此,你实际上调用命令是:
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'
我不想t o在输入命令中使用转义符,扩展命令中有更多特殊字符,这仍然是可能的吗? – sramij
它与你的shell不仅仅是python相关。尝试使用'而不是' – napuzba