Если некоторые из вас сталкиваются с этой проблемой с помощью facebook-connent-plugin для phonegap
, попробуйте удалить файлы в каталоге bin / class / com / facebook / android! -> и перестроить
Вы никогда не должны использовать кавычки оболочки. Правильный способ выполнения команды - не использовать кавычки оболочки, а вместо этого использовать subprocess.call или subprocess.Popen и передать список аргументов без кавычек. Это невосприимчиво к расширению оболочки.
т.е.
subprocess.Popen(['echo', '"', '$foo'], shell=False)
Если вы хотите убрать кавычки с данных оболочки, вы можете использовать shlex.shlex следующим образом:
list(shlex.shlex("hello stack 'overflow'\''s' quite cool"))
Похоже,
try: # py3
from shlex import quote
except ImportError: # py2
from pipes import quote
quote("hello stack overflow's quite cool")
>>> '"hello stack overflow\'s quite cool"'
уводит меня достаточно далеко.
Я почти уверен, что pipe.quote поврежден и не должен использоваться, потому что он неправильно обрабатывает аргументы нулевой длины:
>>> from pipes import quote
>>> args = ['arg1', '', 'arg3']
>>> print 'mycommand %s' % (' '.join(quote(arg) for arg in args))
mycommand arg1 arg3
Я считаю, что результат должен быть примерно таким
mycommand arg1 '' arg3