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

Airflow BashOperator调用Shell脚本时文件找不到问题求助

问题解决步骤

1. 修正Shell脚本的路径处理逻辑

脚本运行时的工作目录并非其所在的scripts目录,因此需要通过脚本自身路径定位csv文件。修改generate_rpt.sh:

#!/bin/bash
src=$1
dst=$2
file_name=$3

# 获取脚本所在的绝对目录
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
# 构建csv文件的绝对路径
CSV_PATH="${SCRIPT_DIR}/${file_name}"

while IFS='' read -r line || [[ -n "$line" ]]; do
    line=${line//$';'/,}
    IFS=',' read -r -a columns <<< "$line"
    # do something with each row
done < "${CSV_PATH}"

2. 修正BashOperator的参数传递

原BashOperator未将params中的参数传递给shell脚本,需在bash_command中显式传递位置参数:

execute_cmd = BashOperator(
    task_id="execute_cmd",
    # 使用脚本的绝对路径调用,避免工作目录差异导致的路径问题
    bash_command="/home/airflow/gcs/dags/sus/scripts/generate_rpt.sh {{ params.src }} {{ params.dst }} {{ params.file_name }}",
    params={'src':'src_prj','dst':'dst_prj','file_name':'rpt_config.csv'}
)

额外验证点

  • 若仍报错,可在脚本开头添加pwd和echo ${CSV_PATH}命令,输出当前工作目录和csv文件的实际路径,排查路径是否正确
  • 确认Airflow Worker对/home/airflow/gcs/dags/sus/scripts/rpt_config.csv有读取权限(gcloud shell能正常运行则权限通常无问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:37:10