脚本的输入文件作为参数从命令行传递。我希望 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
返回.
)。