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

Shell运行正常的脚本被cron调用时报[[: not found错误如何解决

Cron执行Shell脚本报[[: not found错误解决方案

错误根因

  • [[ ]] 是Bash专属的条件判断语法,Cron调度任务默认使用sh作为命令解析器,sh不支持该语法,因此执行到脚本第9行时抛出对应错误。
  • 你直接在终端执行脚本时,默认调用当前用户的登录Shell(通常为Bash),语法可被正常识别,因此运行无异常。

修复方案

方案1(最推荐):脚本头部指定Bash解析器

在脚本最顶部第一行添加Shebang声明,指定使用Bash解析执行,注意声明前不能留空行:

#!/bin/bash

也可使用兼容性更好的写法,自动从系统环境变量中查找Bash路径:

#!/usr/bin/env bash

修改后无需调整Cron配置,即可正常调度执行。

方案2:调整Cron配置指定全局解析器

如果不需要修改脚本内容,可以在当前用户的Crontab配置文件最开头添加如下声明,指定该用户所有Cron任务均使用Bash执行:

SHELL=/bin/bash

注意该配置会影响当前用户的所有Cron任务,若存在其他依赖sh语法的脚本则不建议使用。

方案3:修改脚本语法适配sh解析器

如果需要脚本兼容sh解析规则,可以将第9行的[[ ]]替换为sh原生支持的[ ]语法,调整后的判断逻辑如下:

if [ "$db" != "information_schema" ] && [ "${db:0:1}" != "_" ] && [ "$db" != "mysql" ] && [ "$db" != "performance_schema" ] ; then

该方案兼容性最高,但需要调整原有逻辑写法,容易出现语法错误,不优先推荐。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:48:00