현재 내 부팅 문자열( 로 표시됨 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