Unix Shell: если условия grep & test
У меня следующая проблема: я пытаюсь отправить письма с разным содержанием и разным получателям, когда выполняются следующие условия:
- определенная строка в файле журнала НЕ найдена, и существует определенный файл
- конкретная строка в файле журнала НЕ найдена, и конкретный файл НЕ существует
- найдена определенная строка в файле журнала и существует определенный файл
- определенная строка в лог-файле найдена, а конкретный файл НЕ существует
Конкретная строка находится в новейшем файле журнала, конкретный файл был или не был создан в задании, предшествующем этому. Проблема в том, что он работал, когда помещал файл .sh и запускал его через командную строку в шпаклевке, но так как я перенес его на UC4, он не работает. Он продолжает выбирать неправильные варианты.
Вот мой код (упрощенный, без части электронной почты)
if [ ! grep -q 'errors: 0' "/mypath/$(ls -t /mypath/ | head -n1)" ] && test -e "/mypath2/outtakes.csv"; then
echo 'error + filtered data'
elif [ ! grep -q 'errors: 0' "/mypath/$(ls -t /mypath/ | head -n1)" ] && ! test -e "/mypath2/outtakes.csv"; then
echo 'error + no filtered data'
elif [ grep -q 'errors: 0' "/mypath/$(ls -t /mypath/ | head -n1)" ] && test -e "mypath2/outtakes.csv"; then
echo 'no errors + filtered data'
else
echo 'no errors + no filtered data'
fi
Пробовал менять скобки, условия испытаний по отдельности и по отдельности, сработало. Это должно быть связано с цепочкой условий.