乐 运行('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
中不存在,这解释了为什么它没有产生输出。)
在围绕此问题进行测试时,
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
中不存在,这解释了为什么它没有产生输出。)