Как процитировать метки кавычек в строках в 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; 

  • Неверный формат изображения для команды bootm. ERROR: невозможно получить изображение ядра!
  • Дисплей памяти с использованием md в u-boot
  • Uboot передает аргументы в ядро!
  • U-Boot зависает в
  • Резервные изображения U-Boot
  • Загруженный из NFS Linux не имеет права на команду su
  • Ошибка загрузки U-Boot
  • ОШИБКА: изображение не является fdt - необходимо СБРОСИТЬ плату для восстановления
  • One Solution collect form web for “Как процитировать метки кавычек в строках в u-boot?”

    Для меня работает следующее:

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

    Я нашел это методом проб и ошибок. Похоже, вам нужно закончить строку с одним кавычком, затем добавить символ экранированного пэра-кавычки и снова открыть строку с одним кавычком, чтобы продолжить свою строку.

    Протестировано: U-Boot 2015.04

    Linux и Unix - лучшая ОС в мире.