U-Boot

如何在u-boot中引用字元串中的引號?

  • October 18, 2016

目前我的引導字元串(用 顯示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;

以下對我有用:

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

我通過反複試驗發現了這一點。看起來您需要結束單引號字元串,然後添加轉義的單引號字元並再次打開單引號字元串以繼續您的字元串。

測試:U-Boot 2015.04

引用自:https://unix.stackexchange.com/questions/192895