簡體   English   中英

如何在shell腳本的if else語句中將輸出寫入文件

[英]How to write output to a file in if else statement in shell script

我正在嘗試將輸出寫入文件,正確的輸出將打印在成功的文件中,並在不成功的日志中打印相同的輸出。 在不成功的日志中,它應該只打印不成功的日志,但它也打印成功的日志。

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不存在

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

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM