如何在Perl中更多地使用bash命令回显字符串?
这就是我所尝试的:如何在Perl中更多地使用bash命令回显字符串?,perl,bash,Perl,Bash,这就是我所尝试的: my $s = "s" x 1000; my $r = `echo $s |more`; 但它不工作,我的程序直接退出…请尝试使用以下命令: my $s = "s" x 1000; my $r = system("echo $s |more"); 将显示所有的's',在$r中,您将得到命令的结果(在本例中为0)。在您的示例中它不起作用,因为您从未打印$r。输出捕获在变量$r中。通过使用system(),您可以看到打印到STDOUT的输出,但是您无法(可能)按预期使用输出
my $s = "s" x 1000;
my $r = `echo $s |more`;
但它不工作,我的程序直接退出…请尝试使用以下命令:
my $s = "s" x 1000;
my $r = system("echo $s |more");
将显示所有的's',在
$r
中,您将得到命令的结果(在本例中为0)。在您的示例中它不起作用,因为您从未打印$r
。输出捕获在变量$r
中。通过使用system()
,您可以看到打印到STDOUT的输出,但是您无法(可能)按预期使用输出
只要做:
print $r;
更新:我把say
改为print
,因为“echo”已经给你换行了
如注释中所述,要转义shell元字符,可以使用
您还应该注意,
| more
在将shell的输出捕获到变量中时没有效果。这个过程很简单:echo | more |$r
,你也可以跳过more
如果$s
包含特殊字符怎么办?是否有一个函数可以执行类似于shell的转义?quotemeta是一个错误的工具,因为它用于引用regexp特殊字符,而不是shell特殊字符。传递到bash时如何转义字符串?可以使用。如果你知道要寻找什么,你也可以自己逃离角色。