2012-10-20 38 views
0

如何指示期望在流中查找「生成foo- [模式] .tgz」並返回模式,以便我可以在將來的命令中使用它?從期望輸出提取模式

我發現自己重複執行相同的動作,並想用期待自動化它們。我在一個系統上運行一個腳本並生成一個文件,然後將該文件從該系統中scp到另外兩個系統上。

我可以生成SSH併成功觸發文件版本。我不確定如何捕獲生成的文件的名稱來執行復制。該腳本輸出像「生成foo- 時間戳 .tgz的...完成。」和時間戳運行之間變化明顯,我不想SCP glob的(即scp foo-*tgz),因爲有可能是過時的富文件(因此時間戳)。

我新的希望,並通過實例和這樣仍然磕磕絆絆,偶爾還需要一點手控股。任何建議/幫助非常感謝。

回答

2

我不知道我們是否能夠捕捉模式,但我通常做這種情況是店輸出的變量,然後使用該輸出。例如,如果send -- "./executeSomeScript\r"會給像「生成富-timestamp.tgz ...完成」的輸出,我會

send -- "output=`./executeSomeScript`\r" 
send -- "filename=`echo \$output | awk '{ print \$2 }'\r" 

最後

send -- "scp \$filename [email protected]:path\r" 

更換send命令請注意,轉義$是必要的,這樣它不會在腳本級別解釋,而是作爲文字發送到遠程shell。