乐 运行('find .', :out);不适用于 MacOS

raku run('find .', :out); not working on MacOS

在围绕此问题进行测试时, 建议我尝试使用内置的 MacOS 'find .' 命令和 raku 运行 功能。

1 #!/usr/local/bin/raku
2 
3 shell('find .');                    #works
4 
5 my $proc = run('find .', :out);     #fails with
6 $proc.out.lines(:close).say;        #() [ie. ().Seq] 

原来 raku shell 工作正常,但 raku 运行 失败了。我不完全确定这是否是 MacOS 上 raku 的错误(如果是,我很乐意报告)...?

[MacOS Catalina 10.15.17 ... 欢迎使用™ v2020.10。实施 ™ 编程语言 v6.d。基于 MoarVM 版本 2020.10 构建。]

您 运行ning 遇到的问题与 MacOS 无关 – 它是由 &shell&run 的工作方式不同引起的。查阅文档,我们可以看到 shell 的签名包括 $cmd – 作为 Str 的命令,与您提供的完全一样。

相比之下,run 的签名指定它需要 *@args——即要执行的零个或多个参数列表。

要匹配此签名,您应该更改代码,如下所示:

# my $proc = run('find .', :out);     # doesn't work
  my $proc = run('find', '.', :out);  # works
  my $p2   = run <find .>, :out;      # also works (using word-splitting)

(您的版本要求您的计算机 运行 程序 find .,它在您的 $PATH 中不存在,这解释了为什么它没有产生输出。)