現在、私のブート文字列(で示されている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