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

GitHub Actions工作流报错exit code 127:命令未找到求助

问题分析

exit code 127错误表示bash无法识别脚本中的某个命令,你的核心问题是工作流脚本中使用了HTML实体的引号("),而非bash支持的普通双引号("),导致bash将这些实体字符当作命令的一部分解析,最终触发"命令未找到"的错误。

修复步骤
  • 替换所有HTML引号实体:将脚本中所有的"替换为普通双引号",这是解决exit code 127的关键。
  • 优化变量拼接逻辑:调整MESSAGE变量的换行拼接方式,避免出现多余空行和语法问题。
  • 适配Telegram格式要求:添加Markdown特殊字符转义,使用Telegram推荐的MarkdownV2格式,防止消息因特殊字符发送失败。
修复后的完整工作流配置
name: Telegram Message

on:
  push:
  pull_request:
  issues:
  release:
  create:
  delete:
  fork:
  watch:
  deployment:
  deployment_status:
  milestone:
  repository_dispatch:

jobs:
  notify:
    runs-on: ubuntu-latest

    steps:
      - name: Send Message to Telegram
        run: |
          EVENT_NAME=${{ github.event_name }}
          REPO_NAME=${{ github.repository }}
          REPO_URL="https://github.com/${{ github.repository }}"
          BRANCH_NAME=${{ github.ref_name }}
          COMMIT_MESSAGE=${{ github.event.head_commit.message || 'N/A' }}
          COMMIT_AUTHOR=${{ github.event.head_commit.author.name || 'N/A' }}
          PR_TITLE=${{ github.event.pull_request.title || 'N/A' }}
          ISSUE_TITLE=${{ github.event.issue.title || 'N/A' }}
          RELEASE_NAME=${{ github.event.release.name || 'N/A' }}
          RELEASE_BODY=${{ github.event.release.body || 'N/A' }}
          FORK_NAME=${{ github.event.forkee.full_name || 'N/A' }}
          WATCHER=${{ github.actor || 'N/A' }}
          DEPLOYMENT_URL=${{ github.event.deployment.url || 'N/A' }}
          DEPLOYMENT_STATUS=${{ github.event.deployment_status.state || 'N/A' }}
          MILESTONE_TITLE=${{ github.event.milestone.title || 'N/A' }}
          DISPATCH_EVENT_TYPE=${{ github.event.action || 'N/A' }}

          MESSAGE="**Event Type:** $EVENT_NAME
**Repository:** $REPO_NAME
**Repository URL:** $REPO_URL
**Branch:** $BRANCH_NAME"

          if [ "$EVENT_NAME" == "push" ]; then
            MESSAGE+="
**Commit Message:** $COMMIT_MESSAGE
**Commit Author:** $COMMIT_AUTHOR"
          fi

          if [ "$EVENT_NAME" == "pull_request" ]; then
            MESSAGE+="
**Pull Request Title:** $PR_TITLE"
          fi

          if [ "$EVENT_NAME" == "issues" ]; then
            MESSAGE+="
**Issue Title:** $ISSUE_TITLE"
          fi

          if [ "$EVENT_NAME" == "release" ]; then
            MESSAGE+="
**Release Name:** $RELEASE_NAME
**Release Body:** $RELEASE_BODY"
          fi

          if [ "$EVENT_NAME" == "fork" ]; then
            MESSAGE+="
**Forked Repository:** $FORK_NAME"
          fi

          if [ "$EVENT_NAME" == "watch" ]; then
            MESSAGE+="
**Watcher:** $WATCHER"
          fi

          if [ "$EVENT_NAME" == "deployment" ]; then
            MESSAGE+="
**Deployment URL:** $DEPLOYMENT_URL"
          fi

          if [ "$EVENT_NAME" == "deployment_status" ]; then
            MESSAGE+="
**Deployment Status:** $DEPLOYMENT_STATUS"
          fi

          if [ "$EVENT_NAME" == "milestone" ]; then
            MESSAGE+="
**Milestone Title:** $MILESTONE_TITLE"
          fi

          if [ "$EVENT_NAME" == "repository_dispatch" ]; then
            MESSAGE+="
**Dispatch Event Type:** $DISPATCH_EVENT_TYPE"
          fi

          # 转义Telegram MarkdownV2要求的特殊字符
          ESCAPED_MESSAGE=$(echo "$MESSAGE" | sed -e 's/\_/\\_/g' -e 's/\*/\\*/g' -e 's/\[/\\[/g' -e 's/\]/\\]/g' -e 's/\(/\\(/g' -e 's/\)/\\)/g' -e 's/\~/\\~/g' -e 's/\`/\\`/g' -e 's/\!/\\!/g')

          curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendMessage" \
            -d chat_id=${{ secrets.CHAT_ID }} \
            -d text="$ESCAPED_MESSAGE" \
            -d parse_mode=MarkdownV2
        env:
          TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
          TELEGRAM_CHAT_ID: ${{ secrets.CHAT_ID }}
额外说明
  • 保留了你原有的所有事件触发逻辑和变量获取规则,仅修正语法问题和格式适配。
  • 添加的特殊字符转义逻辑,避免消息中包含下划线、星号等字符导致Telegram API拒绝请求。
  • 使用MarkdownV2格式替代原有的Markdown,这是Telegram当前推荐的Markdown格式标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:05:53