Используйте 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
возвращается .
).