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

如何在Deno.Command的参数中正确传递星号?

在Deno.Command中传递含星号的参数

你遇到的问题核心是:通配符*是由Shell(比如bash)负责解析展开的,而Deno.Command是直接调用cp命令,不会经过Shell处理,所以cp会把source/*当作一个字面量文件名,自然找不到对应的文件。

下面提供两种解决方法:

方法1:通过Shell处理通配符

直接调用Shell(比如bash),把完整命令作为参数传递给Shell,让Shell负责解析通配符:

const output = new Deno.Command("bash", {
  args: ["-c", "cp source/* destination"]
}).outputSync();
console.error(new TextDecoder().decode(output.stderr));

如果是Windows系统,可替换为cmd:

const output = new Deno.Command("cmd", {
  args: ["/c", "copy source\\* destination"]
}).outputSync();
console.error(new TextDecoder().decode(output.stderr));

方法2:在Deno代码中手动展开通配符

使用Deno原生的glob功能(需要--allow-read权限),先匹配所有符合source/*的文件,再把这些路径作为参数传给cp命令:

// 匹配source目录下的所有文件/子目录
const matchedFiles = [...Deno.globSync("source/*")];

// 调用cp命令,传入匹配到的文件和目标目录
const output = new Deno.Command("cp", {
  args: [...matchedFiles, "destination"]
}).outputSync();

console.error(new TextDecoder().decode(output.stderr));

这种方法无需依赖Shell,跨平台兼容性更好,还能更精确地控制要复制的文件范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:12:37