스크립트에서 로깅을 시작하지만 스크립트 중에 로그 파일 이름을 결정하십시오.

스크립트에서 로깅을 시작하지만 스크립트 중에 로그 파일 이름을 결정하십시오.

스크립트 중간에 생성된 파일에 쓸 수 있는 bash 스크립트 부분을 작성하는 방법을 모르지만(사용자 입력에 따라 다르기 때문에) 출력을 처음부터 작성하고 싶습니다.

예:

#!/bin/bash
<start_of_logging>
<code>
 read -p "Enter your city: " city
 touch ${city}
<code>
<end_of_logging>

스크립트는 사용자가 입력한 내용을 알지 못하므로 city제가 맞다면 <start_of_logging>해당 섹션에서 로그인할 수 없습니다. 아니면 해결 방법이 있습니까? 내 말은 모든 것을 처음부터 기록하고 사용자가 제공한 도시라는 파일에 기록하고 싶다는 뜻입니다.

답변1

주석을 요약하면 코드는 다음과 같습니다.

#!/bin/bash
### start logging using temporary logfile
logfile="$(mktemp)" # possibly add options to mktemp, like "-p dir" as needed

# add a message to logfile
log()
{
    echo "$@" >> "$logfile"
}
### code
 read -p "Enter your city: " city
 touch ${city}
### update logfile
newlogfile="something_with_${city}.log"
log "renaming temporary logfile $logfile to $newlogfile"
mv "$logfile" "$newlogfile" && logfile="$newlogfile"
log "now logging to $logfile"
###

"testtown"을 입력하여 스크립트를 실행하면 다음과 같은 결과가 나타납니다.

Enter your city: testtown
me@pc:~> cat something_with_testtown.log
renaming temporary logfile /tmp/tmp.alKCBTV7ti to something_with_testtown.log
now logging to something_with_testtown.log

중요한 팁

아무도 :; rm -rf /도시(또는 그와 비슷한 것)에 들어오지 않기를 바랍니다…

관련 정보