shlex对带转义引号的字符串解析异常问题咨询
shlex对带转义引号的字符串解析异常问题咨询
我最近在做一个程序,需要把命令传递到远程主机,用到了Python的shlex库来解析参数——就是为了防止把未闭合引号的命令发出去,结果遇到了一个让我困惑的行为:
先看符合我预期的正常情况:
当我解析一个未闭合的普通引号字符串时,shlex会正确抛出错误,拦截不合法的输入:
>>> lexer = shlex.shlex('"aaaaaaaaaaaaaaaa') >>> list(lexer) ValueError: No closing quotation
但遇到带转义引号的字符串时,情况就不对了:
>>> lexer = shlex.shlex('"\\"') >>> list(lexer) ['"\\"']
这个结果会导致把"\"传到远程bash执行时,bash会一直等待输入(因为这个命令的引号其实没闭合),但shlex却没有抛出我预期的ValueError。我本来以为这种未闭合引号的情况也应该触发错误才对。
所以想请教各位大佬:这是shlex的预期行为吗?如果是的话,背后的原因是什么?
备注:内容来源于stack exchange,提问作者vladimir H
相关产品推荐
相关产品推荐

