string=$(cat pom.xml | grep developerConnection | sed -e s/\<developerConnection\>scm:git:ssh://g)
echo string
echo $string
developerConnection=$(echo ${string//[[:blank:]]/} | cut -c 3- | sed s/developerConnection//g | head -c-4)
echo developerConnection
developerConnection=$(echo $developerConnection| sed 's/gitlab.tools.russianpost.ru\//gitlab.tools.russianpost.ru:/g')
echo developerConnection
Эта строка:
sendnot=$(echo... | mail... < <(./ssl-cert-check...))
запускает команды echo
, mail
и ./ssl-cert-check
тут же и фиксирует вывод всей партии, т. е. вывод mail
, и присваивает его переменной sendnot
. Вот почему вы получаете электронное письмо, отправленное независимо от оператора if -. Кроме того, mail
, вероятно, не выводит здесь много, поэтому использование подстановки команд кажется ненужным.
Если вы хотите просто сохранить команду для дальнейшего использования, сделайте ее функцией.
send_notice() {
local subject=$1
echo "some message" | mail -s "$subject"
}
...
if whatever...; then
send_notice "subject line..."
fi
($1
будет первым аргументом функции.)
Кроме того, есть еще одна проблема с этой командой :, вы используете канал и перенаправление ввода на mail
. Вы не можете подключить две разные вещи к стандартному вводу команды, поэтому применяется только одна. При множественных перенаправлениях останется в силе последнее; с трубой и перенаправлением это перенаправление.
Значит, ваша команда там практически равна:
mail -s... < <(./ssl-cert-check...)
т. е. echo
на самом деле ничего не делает.
Если вы хотите объединить выходные данные двух команд, вам нужно сделать что-то вроде этого:
(echo "some message";./ssl-cert-check...) | mail...