Как процитировать метки кавычек в строках в u-boot?

В настоящее время моя загрузочная строка (отображается с помощью env print ):

Если я хочу установить переменную в строку в u-boot, я делаю

  • Действительно ли vmlinuz и bzImage одинаковы?
  • Как извлечь файлы из uImage?
  • Может ли vmlinux использоваться вместо uImage?
  • FDT, перемещенный U-Boot, не может быть доступен Linux (в highmem)
  • Проверка CRC файловой системы
  • FreeBSD на малине Pi2
  •  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; 

  • Как сделать SD-карту в качестве загрузки по умолчанию в uboot?
  • Корневая файловая система NFS не монтируется при загрузке
  • Может ли vmlinux использоваться вместо uImage?
  • Проверка CRC файловой системы
  • Почему U-Boot на Cubox постоянно перезагружается с ошибкой «** Файл не найден /boot.scr **»?
  • u-boot отключает запросы DHCP с setenv
  • 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 - лучшая ОС в мире.