2011-03-26 30 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

維護者
相關問題