我需要通过串口将以下命令发送到busybox设备:
SBC1000 > setenv serverip '192.168.128.100'
SBC1000 > setenv fsfile '1k\root.jffs2-128k'
SBC1000 > saveenv
我可以使用反斜杠逃避第一行的单引号而没有问题:
cmd = 'setenv serverip \'192.168.128.100\''
我已经尝试了第二行的反斜杠的各种组合,但无法使1k \ root部分正确转义。我相信它被解释为回归。我尝试了双重和三重逃生但没有成功。
我终于偶然发现了
cmd = 'setenv fsfile \'1k\\\u0072oot.jffs2-128k\''
为我的字符串包含\ r(不是返回)。
有没有更可读的方法在我的字符串中包含这个\ r(不是返回)模式?
解决方案是使用John Szakmeister建议的双引号“”。
我发现命令字符串是基于pexpect-serial传递给私有类中的函数的。
我的猜测是我的字符串是由pexpect以贪婪的方式进行评估的。通过使用明确的分隔符,问题得以克服。