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

Github Actions运行sed报No such file or directory错误如何解决?

问题原因

是的,该报错就是 macOS 自带的 BSD sed 与 Linux 环境使用的 GNU sed 语法差异导致的:

  • macOS 下的 BSD sed 要求 -i(原地修改)参数后必须显式传入备份文件后缀,传入空字符串 "" 代表不生成备份文件,因此你本地的写法可以正常执行
  • Ubuntu(GitHub Actions 运行环境)使用的 GNU sed 中,备份后缀可以直接跟在 -i 参数后,不需要单独加空字符串。你写的 sed -i "" "s|verification_key|${GRAPHQL_SECRET}|" ./schema.graphql 在 Linux 环境会被解析为:备份后缀为空,待操作的第一个文件名为 "",替换规则成为第二个待操作文件,最终导致 sed 执行异常,要么直接报错退出,要么生成不符合预期的文件,触发后续 curl 的文件不存在报错。

修复方案

方案1:仅适配 GitHub Actions Linux 环境

直接删除 sed 命令后的空字符串即可:

sed -i "s|verification_key|${GRAPHQL_SECRET}|" ./schema.graphql

方案2:同时兼容本地 macOS 与 Linux 环境

统一指定备份后缀,执行完成后删除备份文件,两类环境都可正常识别:

sed -i.bak "s|verification_key|${GRAPHQL_SECRET}|" ./schema.graphql && rm -f ./schema.graphql.bak

可选优化建议

可以在 shell 脚本开头添加 set -eux 配置,执行时会打印所有运行的命令与参数,方便后续定位类似环境差异类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:05