I’ve been working on trying to automate the complicated process of building source code on a build machine and then transferring the compiled image files over to my embedded ARMv7 device to be flashed. Each step by itself is easy to automate with standard Linux Shell Script, but when trying to do everything in one giant script things get complicated. Thus far I’ve been using expect-lite to do the work, which is working except now I’ve run into a problem. When transferring the images over I have expect-lite code that looks like the following:
$imageDestination="/the/destination"
$imageSource="/the/source/"
>sftp $userName'@'$buildMachine
>$password
>get $imageSource'/'x-load_sdcard.bin.ift $imageDestination'/'MLO
>echo "Finished"
>bye
If you know a thing or two about expect-lite, then you’ll know that the above variables will be read as “Shell” variables. The problem is that as far as I know SFTP doesn’t allow the use of variables. Is there a way to tell expect-lite to use the predefined variables instead of trying to use “Shell” variables? Or, is there some cleaver way to get around this limitation without removing the variables?
All help is greatly appreciated.
After some experimentation it turns out that this is a scope issue. The solution is to simply move the variable declarations down. They need to be declared after the script has connected to the remote machine via sftp. The fixed code is as follows:
Hopefully this will help others.