Читать консольный вывод сценария оболочки в Perl
Допустим, у меня есть сценарий оболочки 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 ответа
Решение
Вот решение, которое я нашел:
#!/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
Смотрите также здесь.
Либо используйте обратную галочку:
my $results = `print_error.sh`;
или смотри открыто: