Мне нужно передать сложную строку в pexpect.spawn
примерно так:
shell_cmd = '/mnt/ssd-primary/go/bin/grpcurl -plaintext -d \'{"byHash": {"blkHash": "' + blockHash + '"}}\' localhost:14014 iotexapi.APIService.GetBlockMetas | grep "numActions"'
numActions = pexpect.spawn('/bin/bash', ['-c', shell_cmd])
Это не работает, потому что кажется, что pexpect получает \
и отправляет его с командной строкой, а не \
, фактически работающей в качестве escape-символа для '
.
Для борьбы с этим я пробовал строковые литералы с тройными кавычками, подобные этому """ """
, но, похоже, это автоматически добавляет escape-символы во время выполнения, и поэтому escape-символы снова передаются в pexpect, который портит команду.
Чтобы бороться с этим, я попытался разделить всю команду на маленькие кусочки, чтобы передать их в аргумент массива spawn, но я не понимаю, как это возможно из-за отсутствия пробела между символами '
в строке. Может я не прав
Есть ли какой-нибудь другой метод, который я могу использовать, чтобы сделать эту работу?