如何从bash脚本获取perl退出值
我试图通过bash运行perl脚本,并获取perl的exit值 perl_script.pl如何从bash脚本获取perl退出值,bash,perl,perlscript,Bash,Perl,Perlscript,我试图通过bash运行perl脚本,并获取perl的exit值 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=
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=$?
VARIABLE_1=$("perl_script.pl" arg1 arg2)
echo $?
RESULT=$?
“$?”变量始终返回0,无论退出值是多少。
您知道从bash检索perl出口值的另一种方法吗
提前谢谢 bash的
$?
将设置为传递给退出的值
$perl-e'exit 3'
$echo$?
3.
$perl-e'exit 4'
$echo$?
4.
$perl perl_script.pl
测试1
$echo$?
1.
如果程序因异常而死亡,则退出代码将设置为非零值。如果程序既没有死机也没有调用退出,则退出代码将被设置为零
我注意到了这个问题的根本原因。这是一个简单但棘手的问题。
所以我想在这里分享一下
bash.sh
VARIABLE_1=$("perl_script.pl" arg1 arg2)
RESULT=$?
VARIABLE_1=$("perl_script.pl" arg1 arg2)
echo $?
RESULT=$?
echo进程已访问$?,因此结果变量将保存echo操作的退出值,该值始终变为0(成功操作)
修复
VARIABLE_1=$("perl_script.pl" arg1 arg2)
RESULT=$?
echo $RESULT
作为结论,美元?仅在脚本执行后一次性使用 对此有一些想法:向perl脚本中添加一个shebang,使其可执行,使用/perl\u script.pl
您的bash代码是正确的。您的系统中出现了其他错误或缺失question@Cyrus它不起作用。@jordanm我只是编辑了question@Shieryn我完全按照原样复制了perl和bash,并没有重现该问题。Nit:echo
可以使用0以外的代码退出。为什么你在问题中忽略了回音?换句话说,请不要说你发布的代码做了什么,而不是做了什么,请只发布展示你描述的行为的代码。所以。。。您的实际代码中是否有额外的echo$?
(未在Q中显示)?如果是这样的话,我建议用一个清晰的注释来更新这个问题。或者,你只是发布了一个观察?无论如何,这不是一个“答案”,我建议你删除它。至于,它总是由shell为最后执行的命令进行设置,粗略地说。例如,见。