Github Actions使用jq --arg时出现识别失败问题求助
解决Github Actions中jq--arg参数导致的127错误
问题根源
127错误看似是命令未找到,实际是你引用的secrets包含特殊字符(空格、引号、反斜杠等),直接插入命令行时被bash当作语法符号解析,破坏了jq命令的结构。你测试时硬编码值能运行,也印证了是secrets的特殊字符触发了语法错误。
解决方案
改用环境变量传递secrets,避免bash直接解析特殊字符,优化后的步骤代码如下:
- name: App Settings Variable Substitution shell: bash env: SQL_CONN: ${{ secrets.SQL_CONNECTION_STRING }} EMAIL_PASS: ${{ secrets.EMAIL_PASSWORD }} run: | jq --arg my_secret "$SQL_CONN" --arg email_secret "$EMAIL_PASS" '.Config.SiteDb = $my_secret | .Config.EmailPassword = $email_secret' ${{env.DOTNET_ROOT}}/myapp/appsettings.json > newfile.json mv newfile.json ${{env.DOTNET_ROOT}}/myapp/appsettings.json
额外优化说明
- 去掉了多余的
cat管道,直接让jq读取目标文件,提升执行效率 - 增加了
mv命令,将修改后的配置文件替换回原路径,确保后续部署能用到更新后的配置
为什么另一个工作流正常?
另一个工作流对应的secrets未包含会触发bash语法错误的特殊字符,因此没有暴露该问题。
内容的提问来源于stack exchange,提问作者ASpaceWorm
相关产品推荐
相关产品推荐

