使用 tee 将日志文件保存在子文件夹中(在变量中定义)

使用 tee 将日志文件保存在子文件夹中(在变量中定义)

脚本的输入文件作为参数从命令行传递。我希望 tee 的日志文件与输入文件保存在同一目录中:

假设输入文件位于“data/temp/inputfile.txt”

这是给我带来问题的部分:

{
INPUT1=$1

#Save each subdirectory as an element of the array
bkpIFS="$IFS"
IFS='/' read -r -a inputstring <<< $INPUT1
IFS="$bkpIFS"

#Get number of levels
PATHLENGTH=${#inputstring[@]}

if [ PATHLENGTH > 1 ]
then
    #Delete the input file from path
    FILEONLY=${inputstring[-1]}
    INPUTFOLDER=${INPUT1/%$FILEONLY/}
    #Name the log file
    LOGFILE="arrays.log"
    LOGPATH="$INPUTFOLDER$LOGFILE"
else
    #If input file is at working directory
    LOGPATH="arrays.log"
fi

# Here goes the main script...

printf "\nDone!\n"

}  | tee $LOGPATH

我只是在工作目录中得到了一个名为“1”的空文件。当然,如果我在最后一行写入:

} | tee arrays.log

一切进展顺利,但我需要将每个日志文件放在与输入文件相同的位置。

答案1

看上去过于复杂。

LOGPATH=$(dirname $1)/arrays.log

应该做同样的事情,即使在 $1 中没有目录的情况下(因为$dirname foobar返回.)。

相关内容