Читайте консольный вывод сценария оболочки в Perl - PullRequest
2 голосов
/ 17 мая 2011

Допустим, у меня есть скрипт оболочки с именем print_error.sh, который выглядит следующим образом:

#!/usr/bin/bash

echo "ERROR: Bla bla, yada yada."
exit 1

Теперь я нахожусь в Perl-скрипте, вызывая этот скрипт оболочки с

system("print_error.sh")

Теперь я хочу прочитать вывод консоли print_error.sh и записать его в Log4perl logger.

Как мне этого добиться?

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Либо используйте обратные пометки:

my $results = `print_error.sh`;

, либо см. Открыто:

http://perldoc.perl.org/functions/open.html

0 голосов
/ 17 мая 2011

Вот решение, которое я нашел:

#!/usr/bin/perl

use Log::Log4perl;

my $logfile = "log.txt";
$ENV{"LOGFILE"} = $logfile;

Log::Log4perl->init("log4perl.properties");
$logger = Log::Log4perl->get_logger();

$logger->info("pos 1");
system("./print_error.sh 0 2>&1 >> $logfile") == 0
        or die "perl error";
$logger->info("pos 2");

exit 0

См. Также здесь .

...