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

求助:在Airflow中执行删除特定格式文件命令报unexpected token '('

问题原因与解决办法

问题根源

Airflow默认使用POSIX标准的/bin/sh执行命令,而你用到的+([0-9])是Bash专属的**扩展通配符(extglob)**语法,sh不支持这种写法,因此会把(识别为非法语法,抛出unexpected token '('错误。

解决办法

  • 方案一:强制用Bash执行命令
    在Airflow的BashOperator中,将命令用bash -c包裹,让Bash来解析扩展通配符:

    BashOperator(
        task_id="delete_trig_files",
        bash_command="bash -c 'rm -f ABD.+([0-9]).trig'"
    )
    
  • 方案二:改用sh兼容的通配符写法
    如果你不想依赖Bash,可以使用sh支持的通配符,虽然精度稍差,但能满足基础需求:

    rm -f ABD.[0-9]*.trig
    

    这个命令会匹配ABD.后紧跟至少一个数字,再到.trig的文件。注意:如果存在ABD.123abc.trig这类数字后带非数字字符的文件,也会被误删,仅适用于文件名中数字段纯数字的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:50:20