如何在perl脚本中捕获shell脚本的退出代码?

Rah*_*hul 5 shell perl

我想使用perl脚本弹出一个警告框.我 exit 0 用于成功 exit 1 终止shell脚本并在发生错误时终止shell脚本.我想在perl脚本中捕获此退出代码.根据值0或1,我想分别弹出一个包含成功或失败消息的警告框.

TLP*_*TLP 8

您可以使用子错误变量检查另一个进程的退出代码$?.例如:

system("perl foo.pl");
my $exit_val = $? >> 8;   # now contains the exit value of the perl script
Run Code Online (Sandbox Code Playgroud)

阅读文档以获取更多信息.


pkm*_*pkm 6

在退出0的情况下: - shell脚本返回0到perl脚本$?变量

但对于退出1的情况: - 返回256所以需要移动8因此尝试这样:

#!/usr/bin/perl
print "pelr";
system("./shell.sh");
$p=$?>>8;
print $p;
Run Code Online (Sandbox Code Playgroud)

注意 - 在shell脚本中只需输出0并运行然后退出1.并查看o/p

只是注意,当在perl中使用system时,它返回退出代码乘以256.因此,如果命令返回1,则system("command")将返回256.因此,要获得实际返回值,除以256.