在expect脚本中编写文件名

在expect脚本中编写文件名

我有一个文件,其中有几行,比方说:

服务器文件.txt:

[main]
server1 param1 param2 param3
server2 param1 param2 param3

我想采用最后一列的第一个值来组成脚本中的文件名,expect以便文件名是:server2_030417T124700, 在哪里030417T124700是创建文件的当前日期。

我已经能够用这些行实现日期部分:

#!/usr/bin/expect -f
log_file ./log/post.log
<some_code>
system mv ./log/post.log ./log/post_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log

但我哪里有“邮政_“ 我想拥有 ”服务器2" 基于 server_file.txt 的最后一行

我尝试通过使用执行 bash 命令的变量来做到这一点,tail -1 server_file.txt | awk '{print $1}'但没有成功,我认为不使用 bash 命令也可以做到这一点。

答案1

tcl在脚本中添加这 3 行代码expect以获取服务器名称。

set fp [open "server_file.txt" r]
while {[gets $fp data] >= 0} {set servername [lindex [regexp -inline -all -- {\S+} $data] 0]}
close $fp

答案2

已经避免了该命令并在从脚本执行时tail使用正确的语法:awkexpect

#!/usr/bin/expect -f
log_file ./log/post.log
set servername [exec awk {FNR>1 {print $1}} server_file.txt]
system mv ./log/post.log ./log/"$servername"_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log

相关内容