如何在shell脚本的if else语句中将输出写入文件

时间:2019-05-05 03:25:36

标签: linux bash shell

我正在尝试将输出写入文件,正确的输出会打印在成功的文件中,而正确的输出会打印在不成功的日志中。 在不成功的日志中,它应该仅打印不成功的日志,但它也正在打印成功的日志。

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 :(得分:0)

除了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.
    

Reference