Como citar as aspas em strings no u-boot?

5

Atualmente, minha string de inicialização (exibida com env print ) é:

Se eu quiser definir uma variável para uma string no u-boot, eu faço

env set variable 'my string'

Mas o que fazer se a string contiver os caracteres de aspas? Eu quero colocar o seguinte em bootcmd :

if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;

Se eu colocar a string inteira entre aspas ( ' ou " ), ele funciona, mas as aspas em torno de 'on' estão faltando.

Se eu colocar com \'on\' , isso gerará um erro de sintaxe.

Se eu colocá-lo sem aspas, ele executa a parte depois de ; imediatamente.

Como obter as marcas de aspas no valor da variável?

Informação adicional:

O que env print retorna em uma placa "pura":

 bootcmd=run usbprod; if test ${jpsdboot} = 'on' ; then run sdboot; else run emmcboot; fi;

O que minhas várias tentativas produziram:

 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;
    
por SF. 27.03.2015 / 14:05

1 resposta

2

O seguinte funciona para mim:

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

Eu encontrei isso por tentativa e erro. Parece que você precisa finalizar a cadeia entre aspas simples, depois adicionar o caractere escape-quote entre aspas e abrir novamente a sequência de aspas simples para continuar com sua string.

Testado: U-Boot 2015.04

    
por 18.10.2016 / 23:40

Tags