Используйте скрипт bash для хранения результатов команд git и отправки их по электронной почте - PullRequest
0 голосов
/ 07 июля 2019

Вот мой маленький скрипт ... Все, что он делает, это перебирает некоторые папки, проверяет наличие измененных файлов, фиксирует изменения в git, но в то же время сохраняет выходные данные git-сообщений, которые будут отправляться по электронной почте как рапорт:

#!/bin/bash

enviromentName=xyz
serverName=abc
serverSize=1GB

cd /home/$enviromentName/domains/
domainsArray=(*/)
changes=0
message="Usage (max ${serverSize}): $(du -h --max-depth=0 | head -n1 | awk '{print $1;}')\n"
currentDate=$(date +%Y%m%d)

cd /home/$enviromentName/
for i in "${domainsArray[@]}"
do
        cd /home/$enviromentName/domains/$i/public_html/
        gitstatus=$(git status)
        if echo $gitstatus | grep -v -q "nothing to commit, working directory clean"; then
                message+="\n"
                message+="  Git Changes made to ${i}:\n"
                message+="'$gitstatus'\n"
                message+="$(git add .)\n"
                message+="$(git commit -m ${currentDate})\n"
                message+="\n"
                changes=1
        fi
done

if [ "$changes" -eq "1" ]; then
        #echo "Changes done"
        echo -e ${message}|mail -s "${serverName} logs" marcin@citystudio.pl
fi

Вывод скрипта выглядит так:

Usage (max 1GB): 0.5G

Git Changes made to foldername/:
'On branch master Untracked files: (use "git add <file>..." to include in what will be committed) test.php nothing added to commit but untracked files present (use "git add" to track)'

[master d4d3916] 20190707 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public_html/test.file

Похоже, что все разрывы строк в выводе git-команд пропали. Как мне изменить скрипт, чтобы результат выглядел так:

Usage (max 1GB): 0.5G

  Git Changes made to foldername/:
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    test.php

no changes added to commit (use "git add" and/or "git commit -a")
[master 86f39b9] 20190707
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 public_html/test.php

1 Ответ

0 голосов
/ 08 июля 2019

Проблема возникает из-за того, что %{} убирает завершающие символы новой строки.Все, что вам нужно сделать, это изменить

echo -e ${message}|mail -s "${serverName} logs" marcin@citystudio.pl

на

echo -e "${message}"|mail -s "${serverName} logs" marcin@citystudio.pl

Эта ссылка предоставляет полезную дополнительную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...