我试图在我的perl脚本中执行此操作
my $command = `ps -p $pidnumber | wc -l`;
但是当我运行脚本时,它会向我显示如下内容:
sh:-c:第1行:意外标记“|”
附近的语法错误sh:-c:第1行:`| wc -l'
哪个可能是错误?
答案 0 :(得分:1)
$pidnumber
以新行结尾吗?请参阅chomp
功能。
答案 1 :(得分:1)
在执行命令之前尝试打印,因为$pidnumber
可能有一些奇怪的东西:
my $command_str = "ps -p $pidnumber | wc -l";
print $command_str, "\n";
my $command = qx!$command_str!;
如@mob所说,如果打印句中出现换行符,请使用chomp。
答案 2 :(得分:1)
我同意其他答案,即管道之前的额外换行很可能是原因
但该命令并不真正需要管道!
强制quoted命令将其值作为列表返回,然后获取列表的长度,你就得到了wc -l“行数”
my $command_str = "ps -p $pidnumber";
my $linecount = () = qx!$command_str!;