Я написал этот пример сценария bash, который я хочу использовать в основном для установки инструментов в удаленной среде, поэтому мне нужно довольно приличное ведение журнала.
Во время выполнения моего скрипта я хочу записать каждый шаг в окно консоли и в файл, который должен содержать все подробности о выполнении вместе с ошибками.
Как правильно обрабатывать команду установки, в настоящее времяЯ не могу захватить увидеть вывод в файл. Каковы рекомендуемые практики в этом случае? Я видел решения, использующие дополнительные переменные для захвата вывода, но не знаю, как использовать его в моем случае ...
$output="$(comand 2>&1)"
Спасибо
#!/bin/bash
logFile="/log.log"
>$logFile
printLog(){
echo "[$(date "+%Y-%m-%d %H:%M:%S")]:" "$@" "Exit Code: $?" 2>&1 | tee -a $logFile
}
sampleFunc1(){
printLog $LINENO "sampleFunc1"
printLog $LINENO && mkdir "/dir1/dir2" && mkdir -p "/dir3/dir4" && mkdir -p "/dir5/dir6" && touch "file.txt" && cp "/file2.txt" "/dir1/dir2/"
printLog $LINENO "sampleFunc1"
printLog $LINENO ""
}
sampleFunc2(){
printLog $LINENO "sampleFunc2"
array=("/dir1/dir2" "/dir3/dir4" "/dir5/dir6")
for i in "${array[@]}"
do
if [ -d "$i" ]
then printLog $LINENO "exists $i"
else printLog $LINENO "creating $i"
mkdir -p "$i"
fi
done
printLog $LINENO "sampleFunc2"
printLog $LINENO""
}
sampleFunc3(){
printLog $LINENO "sampleFunc3"
printLog apt-get -qq install someApp
printLog $LINENO "sampleFunc3"
printLog $LINENO ""
}
sampleFunc1
sampleFunc2
sampleFunc3