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

SF.*_*SF. 5 u-boot

目前我的启动字符串(用 显示env print)是:

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

env set variable 'my string'
Run Code Online (Sandbox Code Playgroud)

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

if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;
Run Code Online (Sandbox Code Playgroud)

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

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

如果我不加引号,它会;立即执行该部分。

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

附加信息:

env print在“原始”板上返回什么:

 bootcmd=run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;
Run Code Online (Sandbox Code Playgroud)

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

 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;
Run Code Online (Sandbox Code Playgroud)

小智 1

以下对我有用:

U-Boot> setenv bootcmd 'if test ${jpsdboot} = ' \''on'\' '; then run sdboot; else run emmcboot; fi;'
Run Code Online (Sandbox Code Playgroud)

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

测试:U-Boot 2015.04