いくつかの行を含むファイルがあります。
サーバーファイル.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
ところで、どこにいますか?郵便はがき_「持ちたい」サーバー2server_file.txtの最後の行に基づいて
bashコマンドを実行する変数を使用してこれを試しましたが、tail -1 server_file.txt | awk '{print $1}'
成功しませんでした。 bashコマンドを使わずにこれが可能だと思いました。
答え1
tcl
expect
サーバー名を取得するには、スクリプトに次の3行のコードを追加します。
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
スクリプトで実行するときに正しい構文を使用しています。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