如何在u-boot中引用字符串中的引号?

如何在u-boot中引用字符串中的引号?

目前我的引导字符串(显示为env print)是:

如果我想在 u-boot 中将变量设置为字符串,我会这样做

env set variable 'my string'

但是如果字符串中包含引号字符怎么办?我想将以下内容放入bootcmd

if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;

如果我将整个字符串放在引号中(或'",它可以工作,但周围的引号'on'丢失。

如果我把它和\'on\'它放在一起会产生语法错误。

如果我不加引号,它会立即执行后面的部分;

如何将引号放入变量值中?

附加信息:

env print“原始”板上返回的内容:

 bootcmd=run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;

我的各种尝试产生了什么:

 U-Boot > env set bootcmd 'run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;'
 bootcmd=run usbprod; if test ${jpsdboot} = on ; then run sdboot; else run emmcboot; fi;

 U-Boot > env set bootcmd 'run usbprod; if test ${jpsdboot} = \'on\' ; then run sdboot; else run emmcboot; fi;'
 syntax error

 U-Boot > env set bootcmd run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi; 
 Booting from the SD card ...

 U-Boot > env set bootcmd "run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;"
 bootcmd=run usbprod; if test on = on ; then run sdboot; else run emmcboot; fi;

  U-Boot > env set bootcmd "run usbprod; if test ${jpsdboot} = \\'on\\' ; then run sdboot; else run emmcboot; fi;"
  bootcmd=run usbprod; if test on = \\on ; then run sdboot; else run emmcboot; fi;

  U-Boot > env set bootcmd "run usbprod; if test \${jpsdboot} = \'on\' ; then run sdboot; else run emmcboot; fi;"
  bootcmd=run usbprod; if test \\${jpsdboot} = \\'on\\' ; then run sdboot; else run emmcboot; fi;

  U-Boot > env set bootcmd 'run usbprod; if test ${jpsdboot} = \\'on\\' ; then run sdboot; else run emmcboot; fi;'
  bootcmd=run usbprod; if test ${jpsdboot} = \\on\\ ; then run sdboot; else run emmcboot; fi;

答案1

以下对我有用:

U-Boot> setenv bootcmd 'if test ${jpsdboot} = ' \''on'\' '; then run sdboot; else run emmcboot; fi;'

我通过反复试验发现了这一点。看起来您需要结束单引号字符串,然后添加转义的单引号字符并再次打开单引号字符串以继续您的字符串。

测试:U-Boot 2015.04

相关内容