当我需要发送的字符串多次包含'和'时,如何在pexpect spawn中使用字符串?

2024-10-02 00:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个复杂字符串传递到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似乎正在接收\并用命令字符串发送它,而不是实际用作'的转义字符的\

为了解决这个问题,我尝试了像这样的三引号字符串文字""" """,但这似乎会在运行时自动添加转义字符,因此转义字符再次被传递到pexpect中,这会弄乱命令

为了解决这个问题,我尝试将整个命令分成小块传递到spawn的array参数中,但是我不明白这是怎么可能的,因为字符串中的'字符之间缺少空格。也许我错了

有没有其他方法可以让我用呢


Tags: 字符串命令cmdgobinshellpexpectssd

热门问题