首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在复杂bash命令上使用` use‘例程

无法在复杂bash命令上使用` use‘例程
EN

Stack Overflow用户
提问于 2022-03-07 03:56:05
回答 1查看 82关注 0票数 7

得到以下命令:cd /some/dir; /usr/local/bin/git log --diff-filter=A --follow --format=%aI -- /some/dir/file | tail -1

我想从它得到输出。

试过这个:

my $proc2 = run 'cd', $dirname, ';', '/usr/local/bin/git', 'log', '--diff-filter=A', '--follow', '--format=%aI', '--', $output_file, '|', 'tail', '-1', :out, :err;

没有输出。

试过这个:

my $proc2 = run </usr/local/bin/git -C>, $dirname, <log --diff-filter=A --follow --format=%aI -->, $output_file, <| tail -1>, :out, :err;

Git抛出一个错误:

fatal: --follow requires exactly one pathspec

当直接从命令行运行时,相同的git命令运行良好。

我已经证实$dirname$output_file都是正确的。

git log --help并没有为我解释这件事。命令从命令行直接运行。

更新:,所以如果我去掉| tail -1位,就会从raku (一个日期)的命令中得到输出。我还发现,如果在命令行上运行时取出管道,输出就会通过管道传输到more中。对于bash以及如何与raku的run命令交互,我还不太了解,无法确定到底发生了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 05:26:54

您需要运行一个单独的管道程序:

代码语言:javascript
复制
my $p = run «git -C "$dirname" log --diff-filter=A --format=%aI», :out, :err; 
my $p2 = run <tail -1>, :in($p.out), :out;
put .out.slurp: :close with $p2;

此外,在这种情况下,您不需要尾巴,您可以:

代码语言:javascript
复制
put .out.lines(:close).tail with $p
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71376246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档