我如何指示期望在流中查找类似于“生成foo-pattern.tgz”的内容并返回模式,以便在将来的命令中使用它?
我发现自己反复执行相同的操作,并希望使用expect实现它们的自动化。我将ssh放到一个系统上,并在其上运行一个脚本来生成一个文件,然后我将该文件从该系统转换到另外两个系统上。
我可以生成ssh并成功地触发文件构建。我不确定如何捕获生成文件的名称来执行副本。脚本输出类似于“生成foo-timestamp.tgz.完成”之类的内容。而且时间戳在运行期间显然是不同的,我不想使用scp (即scp foo-*tgz),因为可能会有陈旧的foo文件(因此是时间戳)。
我是新的期待,仍然是绊脚石的例子和诸如此类的,偶尔仍然需要一些手握。任何建议/帮助都是非常感谢的。
发布于 2013-01-01 18:04:47
我不知道我们是否能够捕获模式,但是在这种情况下,我通常所做的是将输出存储在一个变量中,然后使用这个输出。例如,如果send -- "./executeSomeScript\r"将提供一个类似于“生成foo-timestamp.tgz .完成”的输出,我将使用以下命令替换send命令
send -- "output=`./executeSomeScript`\r"
send -- "filename=`echo \$output | awk '{ print \$2 }'\r"最后
send -- "scp \$filename user@server:path\r"请注意,转义$是必要的,这样就不会在脚本级别解释它,而是将其发送到远程shell。
https://stackoverflow.com/questions/12992272
复制相似问题