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

Пробовал менять скобки, условия испытаний по отдельности и по отдельности, сработало. Это должно быть связано с цепочкой условий.

0 ответов

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