【发布时间】:2023-01-23 15:10:58
【问题描述】:
我想不出其他方法来运行输出二进制文件的命令行,所以我将不得不使用它。
让我们将二进制文件添加到 git 存储库
mkdir test cd test git init . wget https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Camelia.svg/320px-Camelia.svg.png git add 320px-Camelia.svg.png git commit -am "Added Camelia"获取输出的提交哈希,我们将在下面将其用作
<grabbed hash>。现在,运行这个:
say (run "git", "show", "<grabbed hash>:Camelia.svg.png", :out).out这将返回
Malformed UTF-8消息。很公平,它不是二进制的。但是,我试图用try捕获该异常,但没有办法。我试图将运行与out分开,我仍然遇到无法捕获的异常。任何的想法?
【问题讨论】:
-
<grabbed hash>:是关于什么的? -
@JJ 我修复了您的说明中的错误(例如,
commit add缺少320px-前缀),但我怀疑它们太糟糕了,Liz,我出于不同的原因重现了相同的结果。我想 Camelia 和 Audrey 一样不是二进制,但她确定看起来二进制。 -
@JJ 我听从了你的指示。你也可以这样做;只需启动a fresh Raku replit 并使用 shell(通常在右侧)。
nix将提示安装wget包;我选择了wget.out。最后raku -e 'say (run "git", "show", "84226c9:320px-Camelia.svg.png", :out).out'没有显示Malformed UTF-8而是IO::Pipe<(Path)>(opened)。这只花了几分钟。请考虑也使用 replit 来确认您得到相同的结果。至少我们会知道这个问题是系统或 Rakudo 版本特定的。 -
@raiph 你是对的。哼。
-
嗨,JJ。如果你已经确认你在 replit 中得到了相同的结果(这大概是你的意思是“你是对的”)但是在你的系统上得到了不同的东西然后确认它是你的系统和/或 Rakudo 版本中的错误。如果是这样,那么如果您编辑您的问题以包含您的系统和 Rakudo 版本的详细信息,将会有所帮助。相反,如果您只是感到困惑,那么也许可以关闭您的问题?或者,如果我们都感到困惑(包括他的回答中的 jnthn),那么也许可以澄清您的问题?