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

Bash跳过执行的脚本代码生成21:00空文件的问题如何解决

问题原因

你的脚本首行声明为#!/bin/sh,属于POSIX标准shell环境,不支持Bash专属的[[ ]]扩展语法。此时shell会把判断语句中的>、<识别为标准输出重定向符,执行时会将前面命令的输出写入到>后指定的文件名(也就是21:00),这就是对应空文件生成的核心原因。你当前脚本逻辑看起来能正常执行,大概率是实际运行时调用了Bash而非sh,但语法不规范依然会触发重定向生成文件。

修复方案

推荐优先使用数值比较的写法,规避字符串比较的语法歧义问题:

  • 方案1:使用Bash专属语法,适配Bash运行环境
    将首行解释器声明改为Bash,同时直接提取小时数值做比较,逻辑更清晰也不会产生语法歧义:
#!/bin/bash

current_hour=$(date +%H)
if [ "$current_hour" -ge 21 ] || [ "$current_hour" -lt 7 ]; then
    echo 'Gitlab might be down at these hours, skipping translation sync script' 1>&2
    exit ${EXIT_CODE:-0}
fi

注:给EXIT_CODE增加默认值0,可以避免变量未定义的报错问题。

  • 方案2:保留POSIX sh兼容,适配所有shell环境
    如果需要脚本兼容不同类Unix系统的默认sh环境,使用标准[ ]语法加数值比较即可:
#!/bin/sh

current_hour=$(date +%H)
if [ "$current_hour" -ge 21 ] || [ "$current_hour" -lt 7 ]; then
    echo 'Gitlab might be down at these hours, skipping translation sync script' 1>&2
    exit ${EXIT_CODE:-0}
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:45:03