需要在bash函数中使用循环的建议

时间:2013-01-18 13:20:56

标签: bash loops centos

我正在尝试编写一个脚本来检查几个函数返回,如果返回1写入日志文件并发送给我一封电子邮件,但循环没有按预期工作:

  1. 如果成功打印一切都很好
  2. 如果更新失败,它会在日志中写入“失败”和“完成”两行并向我发送电子邮件。
  3. 你能帮忙找一个错误吗?

    w2log() {
    if [[ $? = 0 ]] ; then
       echo "=== Everything looks good ! DONE `date` ==="  >> $LOG;
    else
       echo "=== Something went wrong ! FAILED `date` ==="  >> $LOG && errmail
    fi
    }
    
    updaterepos() {
       syn6332
       syn5864
       for repo in syn6332 syn5864; do
          w2log
       done
    }
    
    updaterepos
    

1 个答案:

答案 0 :(得分:1)

也许是这样的(如果你想为每个命令提供w2log报告):

updaterepos() {
    for repo in syn6364 syn5864 ; do
        $repo
        w2log
    done
}

应该在命令返回状态后立即调用函数检查$?。函数调用也设置了$? - 这就是你第二次调用w2log时获得第二个“完成”行的原因。