0

我正在尝试在我的 perl 脚本中执行此操作

my $command = `ps -p  $pidnumber |  wc -l`;

但是当我运行脚本时,它会显示如下内容:

sh:-c:第 1 行:意外标记 `|' 附近的语法错误

sh:-c:第 1 行:` | 厕所-l'

哪个可能是错误?

4

3 回答 3

1

我同意其他答案,即管道之前的额外换行很可能是原因

但是该命令并不真正需要管道!

强制引用的命令将其值作为列表返回,然后获取列表的长度,你就得到了 wc -l "line count"

my $command_str = "ps -p  $pidnumber";
my $linecount = () = qx!$command_str!;
于 2013-04-02T18:47:03.497 回答
1

是否$pidnumber以新行结束?见chomp功能。

于 2013-04-02T17:16:19.903 回答
1

在执行命令之前尝试打印,因为$pidnumber可能有一些奇怪的东西:

my $command_str = "ps -p  $pidnumber |  wc -l";
print $command_str, "\n";
my $command = qx!$command_str!;

正如@mob 所说,如果换行符出现在打印句子中,请使用 chomp 。

于 2013-04-02T17:54:25.973 回答