如何在Composite GitHub Action调用的脚本中访问其输入参数
如何在Composite GitHub Action的Shell脚本中访问输入参数
GitHub Actions的表达式语法(如${{ inputs.name }})仅会在action.yaml文件的特定字段(比如run块、env定义等)中被GitHub解析渲染。直接写在独立Shell脚本里的表达式不会被处理,因为脚本是直接交给Shell执行的,Shell无法识别这种语法。要让脚本访问到Composite Action的输入参数,有两种可行的方式:
方法一:通过环境变量传递参数
在action.yaml的步骤中,将输入参数赋值给环境变量,然后在Shell脚本中读取该环境变量:
修改mydemo/action.yaml:
name: "mydemo" description: "" inputs: name: description: "输入的名称" runs: using: "composite" steps: - name: 执行echo脚本 env: # 将inputs.name的值赋给环境变量INPUT_NAME INPUT_NAME: ${{ inputs.name }} run: | source ${GITHUB_ACTION_PATH}/echo.sh shell: bash
修改mydemo/echo.sh:
# 读取环境变量并输出 echo "Hello, $INPUT_NAME"
方法二:通过命令行参数传递参数
在action.yaml的run块中调用脚本时,直接将输入参数作为命令行参数传入,脚本通过位置变量读取:
修改mydemo/action.yaml:
name: "mydemo" description: "" inputs: name: description: "输入的名称" runs: using: "composite" steps: - name: 执行echo脚本 run: | # 将inputs.name作为参数传给echo.sh ${GITHUB_ACTION_PATH}/echo.sh "${{ inputs.name }}" shell: bash
修改mydemo/echo.sh:
# 通过$1读取第一个命令行参数 echo "Hello, $1"
两种方式的适用场景
- 环境变量传递:适合需要传递多个参数的场景,参数可以通过清晰的变量名访问,不易混淆。
- 命令行参数传递:适合参数数量较少的场景,写法更简洁。
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

