【问题标题】:How to capture the exit code of a shell script in a perl script?如何在 perl 脚本中捕获 shell 脚本的退出代码?
【发布时间】:2013-08-28 17:13:34
【问题描述】:

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

【问题讨论】:

    标签: perl shell


    【解决方案1】:

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

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

    阅读documentation了解更多信息。

    【讨论】:

    • 我使用了你的方法,但它给出了 127。但我在我的 shell 脚本中使用了 exit 0。所以,我需要一个 0 而不是 127。
    • @Rahul : $? & 127 会给你你想要的,如链接文档中所述。
    • 好的,我知道了。现在如何在 perl 脚本中弹出警告框或在 perl 中使用 javascript。
    【解决方案2】:

    如果退出 0:- shell 脚本返回 0 到 perl 脚本 $?变量

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

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

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

    请注意,在 perl 中使用 system 时,它返回退出代码乘以 256。因此,如果命令返回 1,system("command") 将返回 256。所以,要获得真正的返回值,除以256。

    【讨论】:

      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2011-11-26
      • 2014-10-21
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多