作为参数传递时删除字符串的内部引号
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\""
我目前有一个 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\""