Files

在期望腳本中編寫文件名

  • April 3, 2017

我有一個文件有幾行,比如說:

server_file.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

但是在我有“ post_ ”的地方,我想根據 server_file.txt 的最後一行有“ server2 ”

我試圖通過使用一個執行 bash 命令tail -1 server_file.txt | awk '{print $1}'但沒有成功的變數來做到這一點,我認為不使用 bash 命令也可以做到這一點。

在腳本中添加這 3 行tcl程式碼expect以獲取伺服器名稱。

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

當從腳本執行時,它已經避免了tail命令並使用了正確的語法:awk``expect

#!/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

引用自:https://unix.stackexchange.com/questions/355574