testing2=
устанавливает переменную testing2
в пустую строку; на самом деле переменная установлена.
Однако если бы вы выполнили echo $testing99
в интерактивной оболочке Bash (без установки errexit
, т.е., set -e
), вы получите ошибку:
bash: testing99: unbound variable
Только что, тестируя скрипты, я обнаружил, что интерактивный shell не всегда выходит при попытке расширить переменную, которая не была установлена, в то время как неинтерактивный shell (выполняющий shell-сценарий) всегда выходит. Согласно странице POSIX man для set
:
-u Оболочка должна записывать сообщение в стандартную ошибку, когда она пытается расширить переменную, которая не установлена, и немедленно завершить работу. Интерактивная оболочка не должна выходить.
Интерактивная оболочка Bash не выйдет, если errexit
не был также установлен. С другой стороны, интерактивная оболочка dash не выйдет, даже если ранее была установлена set -e
.
В настоящее время я сам борюсь с режимом Falcon. Я почти уверен, что вам нужно установить bootargs
на то, что вы хотите передать ядру, прежде чем вы сделаете spl export
. spl export
редактирует FDT, чтобы иметь bootargs
. Сообщение об ошибке похоже на пустую командную строку ядра. Ваш bootcmd
не будет выполняться в режиме Falcon.