Как записать вывод в файл в операторе if else в сценарии оболочки - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь записать вывод в файл, правильный вывод напечатан в успешном файле, и то же самое напечатано в неудачном журнале. В неудачном журнале он должен печатать только неудачные журналы, но он также печатает успешные журналы.

for TASKARN  in `aws ecs list-tasks --cluster APPS --desired-status RUNNING --region us-east-1 --service-name coreservice-service | jq .taskArns[] | sed 's/.$//; s/^.//' | cut -d":" -f 6 | cut -d"/" -f 3`
do
echo $TASKARN
cd /tmp/
val=`find core-$TASKARN.log -maxdepth 0 -daystart -mtime -1`
if [ $val == core-$TASKARN.log ]
then
echo " core-$TASKARN.log is present " >> /opt/successfull.log
else
echo " core-$TASKARN.log is not present " >> /opt/unsuccessfull.log
fi
done

В успешном журнале

core-26f374a6a.log присутствует

В неудачном журнале

core-26f374a6a.log отсутствует

1 Ответ

0 голосов
/ 05 мая 2019

Помимо предложений shellcheck , вы также можете рассмотреть следующие пункты:

  • Заменить TASKARN на taskarn.Переменные в верхнем регистре зарезервированы как переменные среды.Вы можете случайно переопределить переменную окружения, если установите полную переменную в верхнем регистре.
  • Рассмотрите возможность удаления cd /tmp/.Вместо этого:

    val=$(find /tmp/ "core-${taskarn}.log" -maxdepth 0 -daystart -mtime -1)
    # When you embed a variable inside string consider curly braces. See reference.
    

Ссылка

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