Входной файл сценария передается как аргумент от командной строки. Я хочу, чтобы файл журнала от мишени был сохранен в том же каталоге, чем входной файл:
Позволяет говорят, что входной файл в "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
все подходит, но мне нужен каждый файл журнала в том же месте, чем входной файл.
Взгляды чрезмерно сложными.
LOGPATH=$(dirname $1)/arrays.log
должен сделать то же самое, даже в случае, где нет никакого каталога в 1$ (потому что $dirname foobar
возвраты .
).