如何在csh中检查错误代码的状态?

时间:2014-07-11 12:06:19

标签: linux unix status csh

这不是Perl的问题,这是一个csh问题。

Linux RHEL 5.5.56上的Perl 5.8.8。

我有一个测试Perl程序,它使用'exit 3;'设置退出状态。 Perl程序是从我称之为'test'的csh脚本运行的。

Perl程序:

#/usr/bin/perl
# July 11, 2014
# Test exit code with csh $status variable
my($i);
$i=3;
print "$0 Exit with error code $i\n";
exit $i;
调用Perl progam的

'test'csh脚本:

#/bin/csh
# July 10, 2014,

perl tstatus.pl
echo "Status=$status"
if ($status > 0) then
    echo "ERROR in status: $status"
endif

'echo'行ERROR状态:$ status“永远不会执行,即使'echo'状态= $ status'表示状态为3.

如何让我的csh检查并处理$ status的值? $ status是一个系统变量。

我也试过'if($ stats)then'但这也不起作用。 csh脚本中未报告任何错误。

谢谢。

P.S。我没有在csh中做复杂的事情,所以我还没有准备去打击。我已经阅读了“为什么不是csh”文件。谢谢。

2 个答案:

答案 0 :(得分:2)

echo命令成功,将$status重置为0.因此,if永远不会看到非零$status

因此,解决方案是消除echo命令或在$status命令之后立即保存perl的值。

我最近遇到了a similar issue

答案 1 :(得分:0)

在csh中执行的每一行都会设置$ status

我通常会遵循任何声明,在其中要使用类似以下内容测试状态:

设置myrc = $ status

,无论调用和结果评估之间执行的语句数量如何,它都会持续存在。

例如:

    perl tstatus.pl
    set myrc = $status
    echo "Status=$myrc"
    if ($myrc> 0) then
        echo "ERROR in status: $myrc"
    endif