加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl6 – 如何存储run或shell返回的值?

发布时间:2020-12-15 23:28:06 所属栏目:大数据 来源:网络整理
导读:假设我有这个脚本: # prog.p6my $info = run "uname"; 当我运行prog.p6时,我得到: $perl6 prog.p6Linux 有没有办法存储返回值的字符串版本并阻止它输出到终端? 已经有similar question但它没有提供具体的答案. 解决方法 您需要通过设置:out来启用stdout
假设我有这个脚本:

# prog.p6
my $info = run "uname";

当我运行prog.p6时,我得到:

$perl6 prog.p6
Linux

有没有办法存储返回值的字符串版本并阻止它输出到终端?

已经有similar question但它没有提供具体的答案.

解决方法

您需要通过设置:out来启用stdout管道,否则默认为$* OUT.所以:

my $proc = run("uname",:out);
my $stdout = $proc.out;
say $stdout.slurp;
$stdout.close;

可以缩短为:

my $proc = run("uname",:out);
say $proc.out.slurp(:close);

如果你想分别捕获stderr上的输出而不是stdout,你可以这样做:

my $proc = run("uname",:out,:err);
say "[stdout] " ~ $proc.out.slurp(:close);
say "[stderr] " ~ $proc.err.slurp(:close);

或者如果你想将stdout和stderr捕获到一个管道,那么:

my $proc = run("uname",:merge);
say "[stdout and stderr] " ~ $proc.out.slurp(:close);

最后,如果您不想捕获输出并且不希望它输出到终端:

my $proc = run("uname",:!out,:!err);
exit( $proc.exitcode );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读