Есть ли способ использовать переменные Expect-Lite внутри порожденной команды? - PullRequest
1 голос
/ 26 марта 2011

Я пытался автоматизировать сложный процесс сборки исходного кода на сборочном компьютере, а затем перенести файлы скомпилированного изображения на мое встроенное устройство ARMv7 для прошивки.Каждый шаг сам по себе легко автоматизировать с помощью стандартного Linux Shell Script, но при попытке сделать все в одном гигантском скрипте все усложняется.До сих пор я использовал ожидаемую-облегченную для выполнения работы, которая работает, но теперь я столкнулся с проблемой.Когда я передаю изображения поверх, у меня есть ожидаемый облегченный код, который выглядит следующим образом:

$imageDestination="/the/destination"
$imageSource="/the/source/"

>sftp $userName'@'$buildMachine
>$password

>get $imageSource'/'x-load_sdcard.bin.ift $imageDestination'/'MLO

>echo "Finished"
>bye

Если вы знаете кое-что о ожидаемом облегчении, то вы будете знать, что приведенные выше переменные будут прочитаныв качестве переменных "Shell".Проблема в том, что, насколько мне известно, SFTP не позволяет использовать переменные.Есть ли способ сообщить ожидаемому lite использовать предварительно определенные переменные вместо того, чтобы пытаться использовать переменные оболочки?Или есть какой-то более умный способ обойти это ограничение, не удаляя переменные?

Вся помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Dreligor,

Нет проблем с областью действия.Переменные Expect-Lite имеют глобальную область видимости (как указано в документации).Я думаю, проблема в том, что вы используете кавычки, которые усложняют ситуацию.Вы должны попробовать:

$imageDestination=/the/destination
$imageSource=/the/source

>sftp $userName'@'$buildMachine
>$password

>get $imageSource/x-load_sdcard.bin.ift $imageDestination/MLO

>echo "Finished"
>bye

Крейг Миллер - автор и сопровождающий ожидающего-лайта

0 голосов
/ 29 марта 2011

После некоторых экспериментов выясняется, что это проблема области видимости.Решение состоит в том, чтобы просто переместить объявления переменных вниз.Они должны быть объявлены после подключения скрипта к удаленной машине через sftp.Фиксированный код выглядит следующим образом:

>sftp $userName'@'$buildMachine
>$password

$imageDestination="/the/destination"
$imageSource="/the/source/"

>get $imageSource'/'x-load_sdcard.bin.ift $imageDestination'/'MLO

>echo "Finished"
>bye

Надеюсь, это поможет другим.

...