Внутренние кавычки строки удаляются при передаче в качестве аргумента - PullRequest
0 голосов
/ 26 апреля 2019

В настоящее время у меня есть скрипт 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")

1 Ответ

2 голосов
/ 26 апреля 2019

Кавычки вокруг SUSE соответствуют кавычкам, которые ограничивают аргумент. Оболочка удаляет их во время синтаксического анализа командной строки.

Вы можете поместить весь аргумент в двойные кавычки и избежать встроенных двойных кавычек.

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