Как получить значение выхода perl из скрипта bash - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь запустить скрипт perl через bash и получить значение выхода perl.

perl_script.pl

print "test1";
sub a{
  my @array = ("a","b");
  if ($#array ne -1){
   return 1;
  }
  else {return 0;}
}
my $result=a(arg1,arg2);
exit $result;

bash. sh

VARIABLE_1=$("perl_script.pl" arg1 arg2)
RESULT=$? 

'$?' переменная продолжает возвращать 0 независимо от значения выхода. Вы знаете другой способ получить значение выхода perl из bash?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 01 мая 2020

bash '$? будет установлено в значение, переданное exit [1] .

$ perl -e'exit 3'

$ echo $?
3

$ perl -e'exit 4'

$ echo $?
4

$ perl perl_script.pl
test1
$ echo $?
1

  1. Если программа Умирает от исключения, код выхода будет установлен в ненулевое значение. Если программа не умирает и не вызывает exit, код выхода будет установлен на ноль.
0 голосов
/ 01 мая 2020

Я заметил root причину этой проблемы. Это простая проблема, но сложно. Поэтому я хотел бы поделиться этим здесь.

bash. sh

VARIABLE_1=$("perl_script.pl" arg1 arg2)
echo $?
RESULT=$? 

Процесс эха получил доступ к $?, Поэтому переменные RESULT сохранят значение выхода операции эха, которая всегда обнуляется (успешно) операция)

Исправление

VARIABLE_1=$("perl_script.pl" arg1 arg2)
RESULT=$? 
echo $RESULT

Как вывод, $? имеет одноразовое использование только сразу после выполнения скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...