从脚本开始记录,但在脚本过程中决定日志文件名

从脚本开始记录,但在脚本过程中决定日志文件名

我不知道如何编写 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 /(或类似)城市......

相关内容