无法在复杂的 bash 命令上使用“run”例程
得到这个命令: cd /some/dir; /usr/local/bin/git log --diff-filter=A --follow --format=%aI -- /some/dir/file | /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 , $dirname,
Git 抛出错误:
fatal: --follow 只需要一个路径规范
直接从命令行运行时,相同的 git 命令运行良好。
我已确认 $dirname
和 $output_file
都是正确的。
git log --help 没有为我提供任何线索。命令直接从命令行运行良好。
更新:所以如果我摘下| tail -1
位,我从 raku(日期)中的命令中获取输出。我还发现,如果我在命令行上运行时取出管道,输出就会通过管道传输到 more
中。我对 bash 以及它如何与 raku 的 run
命令交互的了解不够,无法确定发生了什么。
Got this command: cd /some/dir; /usr/local/bin/git log --diff-filter=A --follow --format=%aI -- /some/dir/file | tail -1
I want to get the output from it.
Tried this:
my $proc2 = run 'cd', $dirname, ';', '/usr/local/bin/git', 'log', '--diff-filter=A', '--follow', '--format=%aI', '--', $output_file, '|', 'tail', '-1', :out, :err;
Nothing output.
Tried this:
my $proc2 = run </usr/local/bin/git -C>, $dirname, <log --diff-filter=A --follow --format=%aI -->, $output_file, <| tail -1>, :out, :err;
Git throws an error:
fatal: --follow requires exactly one pathspec
The same git command runs fine when run directly from the command line.
I've confirmed both $dirname
and $output_file
are correct.
git log --help
didn't shed any light on this for me. Command runs fine straight from command line.
UPDATE: So if I take off the | tail -1
bit, I get output from the command in raku (a date). I also discovered if I take the pipe out when running on the command line, the output gets piped into more
. I'm not knowledgeable enough about bash and how it might interact with raku's run
command to know for sure what's going on.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要为管道运行单独的过程:
在这种情况下您也不需要 tail,您可以执行以下操作:
You need to run a separate proc for piping:
Also you don't need tail in this case, you can do: