2011-03-26 79 views
1

我一直在努力尝试在构建机器上构建源代码的复杂过程,然后将编译后的图像文件传输到我的嵌入式ARMv7设备中以进行闪存。每一步本身都很容易用标准的Linux Shell脚本自动化,但是当试图在一个巨大的脚本中做所有事情时,事情就会变得复杂。到目前为止,我一直使用expect-lite来完成这项工作,除了现在遇到问题之外,这项工作正在进行。当传输图像在我的预料,精简版的代码如下所示:有没有办法在派生命令中使用Expect-Lite变量?

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

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

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

>echo "Finished" 
>bye 

如果你知道一件事或两个关于预计,精简版,那么你就会知道,上面的变量将被读作“壳“变量。问题是,据我所知,SFTP不允许使用变量。有没有办法告诉expect-lite使用预定义变量而不是尝试使用“Shell”变量?或者,是否有一些切肉刀的方式来解决这个限制而不删除变量?

非常感谢所有帮助。

回答

0

经过一番实验后发现这是一个范围问题。解决方案是简单地将变量声明向下移动。他们需要在脚本通过sftp连接到远程机器后进行声明。固定代码如下:

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

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

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

>echo "Finished" 
>bye 

希望这能帮助别人。

1

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 

克雷格·米勒 - 作者和期待-LITE

维护者
相关问题