2012-10-20 37 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。