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

如何在bash/shell命令中直接包装导入文件内容(以Node.js为例)

解决方案

Node.js 直接拼接执行(无临时文件)

有两种简洁方式可以不用额外的wrapper文件,直接把前置代码、目标文件内容、后置代码拼接后让Node执行:

方法1:通过 node -e 执行拼接字符串

利用bash命令替换把三段内容合并成一个字符串,传给node -e执行:

node -e "$(echo "console.log('start');"; cat file.js; echo "console.log('end');")"

方法2:通过管道传递合并内容

用bash进程替换(<())生成包含前置/后置代码的临时文件描述符,再和file.js一起通过cat合并,最后管道给Node(Node默认会读取标准输入作为脚本执行):

cat <(echo "console.log('start')") file.js <(echo "console.log('end')") | node

适配npm脚本

把上述命令直接写入package.json的scripts字段,注意转义双引号:

{
  "scripts": {
    "wrapped-run": "cat <(echo \"console.log('start')\") file.js <(echo \"console.log('end')\") | node"
  }
}

执行时直接运行npm run wrapped-run即可。

通用bash方案(适配其他CLI工具)

如果需求扩展到其他必须读取文件而非标准输入的CLI工具,可以用临时文件中转拼接内容,用完自动清理:

# 创建临时文件
tmp_file=$(mktemp)
# 确保脚本退出时删除临时文件
trap 'rm -f "$tmp_file"' EXIT

# 写入前置代码、目标文件内容、后置代码
echo "console.log('start')" > "$tmp_file"
cat file.js >> "$tmp_file"
echo "console.log('end')" >> "$tmp_file"

# 执行目标命令
node "$tmp_file"

只需把最后一行的node换成你需要的工具,就能适配其他CLI场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:25:42