首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在perl脚本中使用bash管道

如何在perl脚本中使用bash管道
EN

Stack Overflow用户
提问于 2018-06-08 00:11:01
回答 2查看 105关注 0票数 -2

我需要使用perl脚本运行这个命令,使用system.This代码行不是working.do你知道为什么吗?

代码语言:javascript
复制
system("ping -w 300  -i $interval $host \|  sed 's/\(.*\)/\$(date +%F\ %T) \1/g' >> $ test" )
EN

回答 2

Stack Overflow用户

发布于 2018-06-08 11:16:50

你的程序充满了代码注入错误。

在使用夏令时的地方,使用本地时间作为时间戳而不包括时区信息(例如,与UTC的偏移量)是有问题的。

以下是解决这些问题的解决方案:

代码语言:javascript
复制
use POSIX              qw( strftime );
use String::ShellQuote qw( shell_quote );

open(my $fh_log, '>>', $test)
   or die $!;

open(my $pipe, '|-', "ping", "-w", "300", "-i", $interval, "--", $host)
   or die $!;

while (<$pipe>) {
   my $ts = strftime("%Y-%m-%dT%H:%M:%S%z", localtime);
   print($fh_log "[$ts] $_");
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-08 01:13:23

代码语言:javascript
复制
my $ping_check =`ping -w 300  -i $interval $host | while read line; do echo \`date \+%F%T\` - \$line >> $logfile; done `;

使用下面的代码行,我能够获得我需要的东西

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50745832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档