You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Shell脚本实现新版本仅在9点单次通知?

解决方案

修改后的脚本可实现你要求的需求,代码如下:

NOTIFICATION_FILE="$engineversion_folder/m3.txt"

if [[ $current_version != $new_version ]]; then
    # 先检查是否已发送过通知
    if [[ ! -f "$NOTIFICATION_FILE" ]]; then
        current_hour=$(date +'%H')
        # 仅在上午9点执行通知发送并创建标记文件
        if [[ $current_hour -eq 9 ]]; then
            aws sns publish --topic-arn "arn:aws:sns:xxxxxxxxxxxx:maintenance-test" \
                --message "New Engine Version : $new_version is available for $database database."
            # 用touch创建空文件做发送标记,避免命令输出为空导致标记失效
            touch "$NOTIFICATION_FILE"
            echo "Notification sent successfully!"
        fi
    else
        echo "Notification already sent!"
    fi
else
    # 版本一致时删除记录文件,-f参数避免文件不存在时报错
    rm -f "$NOTIFICATION_FILE"
    echo "Versions match, notification record cleared."
fi

关键修改说明:

  • 统一文件路径变量:用NOTIFICATION_FILE管理记录文件路径,避免重复书写出错
  • 调整判断逻辑顺序:先检查是否已发送过通知,再判断当前时间,确保9点过后即使版本仍不一致,也不会重复发送
  • 改用touch做标记:原脚本依赖aws命令的输出写入文件,若命令执行失败(如权限、网络问题)会导致标记失效,touch能稳定生成标记文件
  • 优化删除命令:单个文件无需递归删除,用rm -f避免文件不存在时抛出错误
  • 增加调试提示:补充发送成功、版本匹配时的明确输出,方便排查运行状态

内容的提问来源于stack exchange,提问作者asdfcgrep_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:40:38