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

Другие вопросы по тегам