作为参数传递时删除字符串的内部引号

Inner quotes of string being removed when passed as an argument

我目前有一个 python 脚本,它接受多个参数,其中一个恰好是传递给脚本的三引号字符串,如下所示:

Script.py --FunctionArgs '"osPlatform='SUSE',osVersion=11"'

如您所见,有外部单引号,内部双引号和一对单引号。在脚本中使用这些内部单引号很重要,但是当我打印 sys.args 时,我得到以下信息:

(FunctionArgs='"osPlatform=SUSE,osVersion=11"')

如您所见,内部引号已被删除。由于脚本的性质 运行 我无法对参数的奇怪三引号格式做任何事情。无论如何我可以让我的 Python 脚本不从参数中删除这些内部引号吗?

FunctionArgs 参数没有外部单引号时(我无能为力)它工作正常并且内部单引号被保留:

Script.py --FunctionArgs "osPlatform='SUSE',osVersion=11"

结果

(FunctionArgs="osPlatform='SUSE',osVersion=11")

SUSE 周围的引号与分隔参数的引号相匹配。 shell 在其命令行解析期间删除它们。

您可以将整个参数放在双引号中,并对嵌入的双引号进行转义。

Script.py --FunctionArgs "\"osPlatform='SUSE',osVersion=11\""