예상 스크립트에 파일 이름 쓰기

예상 스크립트에 파일 이름 쓰기

몇 줄이 포함된 파일이 있습니다.

서버 파일.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

tclexpect서버 이름을 가져오려면 스크립트에 다음 세 줄의 코드를 추가하세요 .

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

관련 정보