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

관련 정보