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

如何在GitHub Action中运行cat命令并解决其不生效的问题

问题根源

你使用的<(echo ";")属于Bash专属的进程替换语法,GitHub Actions默认的脚本执行环境是兼容POSIX标准的sh,不支持该特性,因此整行cat命令会直接执行失败,表现为命令被忽略、没有生成目标文件。

修复方案

方案1:显式指定使用Bash执行脚本

如果是把命令写在GitHub Actions的run字段中,添加shell: bash参数即可:

- name: 合并JS资源
  run: |
    cat js/styleswitch.js <(echo ";") js/navigation.js <(echo ";") js/browsercheck.js > js/header.js
    rm js/styleswitch.js js/navigation.js
  shell: bash

如果是执行独立的.sh脚本,在脚本头部添加shebang行#!/bin/bash,执行时使用bash 你的脚本名.sh而非sh 你的脚本名.sh调用即可。

方案2:改写命令兼容POSIX标准

不想修改shell配置的话,可以把命令改写为无依赖的通用写法,效果完全一致:

{ cat js/styleswitch.js; echo ";"; cat js/navigation.js; echo ";"; cat js/browsercheck.js; } > js/header.js
rm js/styleswitch.js js/navigation.js

该写法使用代码块组统一重定向输出,所有POSIX兼容的shell都可以正常执行。

额外排查项

如果修复后仍识别不到生成的文件,可做两项检查:

  • 在cat命令前添加ls -la js/,确认执行命令前三个源JS文件确实存在,路径配置正确
  • 确认推送生产分支的步骤在cat命令之后执行,没有工作目录切换、缓存重置等操作覆盖生成的header.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:00