求助:在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
相关产品推荐
相关产品推荐

