ps efax 2&gt; / dev / null | grep firstbo | grep -v grep | wc -l </ p>
如果我将其存储为标量,那么,标量包含一个新行,如何删除新行
答案 0 :(得分:6)
chomp $scalar;
但ps
之后的所有内容都可以在脚本中更高效地完成,如下所示:
my $count = 0;
open(my $ps, "ps -e -o comm |") or die "failed to spawn ps: $!";
while(<$ps>) {
$count++ if /firstbo/;
}
close $ps;
答案 1 :(得分:3)
chomp $scalar
会吃换行符
答案 2 :(得分:3)
使用chomp
运算符。您还可以利用grep
中的re代表正则表达式的事实来压缩您的命令:
chomp(my $num_firstbo = `ps efax 2>/dev/null | grep [f]irstbo | wc -l`);
通过匹配单例字符类,上面的命令匹配argv包含firstbo
但不包含grep
命令本身的进程。