#perl #bash
#perl #bash
Вопрос:
Из bash-скрипта как я могу выполнить perl-скрипт, получить вывод и завершить работу, если значение равно = 0? Также в perl-скрипте, как мне вернуть значение, мне просто вернуть его или распечатать?
Ответ №1:
#!/bin/bash аргументы perl-скрипта amp;amp; exit
Если вы хотите продолжить выполнение, возвращаемое значение должно быть в $?
Обратите внимание, что существует различие между значением, возвращаемым perl-скриптом, и выводом скрипта. Чтобы получить выходные данные скрипта, используйте оператор $():
#!/bin/bash вывод =$ (аргументы perl-скрипта) повторяем, что perl-скрипт вернул $? echo Вывод скрипта был $output
Комментарии:
1. на самом деле, если возвращаемое значение не равно 0, я хочу, чтобы оно продолжало работать
2. Я получаю: команда не найдена при добавлении amp;amp; exit в скрипт bash
3. @user391986 ‘cmd amp;amp; exit’ завершится, если cmd вернет ноль, и продолжит выполнение, если cmd вернет любое другое значение. Не уверен, почему вы получаете команду, которая не найдена.
Ответ №2:
Чтобы получить код возврата, используйте exit
функцию. Пример:
Perl-скрипт:
if ($success) {
$return_value = 0;
} else {
$return_value = 1;
}
exit($return_value);
Bash-скрипт:
perl scriptname args > outfile amp;amp; exit
Это предполагает, что вы хотите завершить работу, если возвращаемое значение Perl-скрипта равно 0, и вы хотите сохранить вывод Perl-скрипта в outfile
. Если возвращаемое значение не равно нулю, оно хранится в $?
, вы можете сохранить это значение в переменной, если хотите.
Комментарии:
1. из perl-скрипта выводить «0» или возвращать «0» также как мне получить значение perl внутри $ return_value
2. @user это Perl-скрипт. Вы возвращаете значение из скрипта с помощью
exit
функции. Вы можете привязать любое число, которое вам нравится$return_value
, как вы обычно делаете в Perl. Я добавил еще немного к примеру perl для пояснения.
Ответ №3:
Ваш perl-скрипт: foo.pl
#!/usr/bin/perl
# do something and then
exit 1;
И внутри вашего скрипта bash foo.sh:
#!/bin/bash
# do something and then call perl script
perl foo.pl
# check return value using $?
echo "perl script returned $?"
Комментарии:
1. кстати, 1 не будет означать успешное возвращаемое значение и
exit 1
нуждается в точке с запятой.2. Спасибо, добавлено отсутствующее
;
и правильное1
значение определенно не означает успешное значение, это был просто пример.