这不是Perl的问题,这是一个csh的问题。
Linux RHEL 5.5.56上的Perl 5.8.8。
我有一个使用'exit 3'的testingPerl程序 设置退出状态。 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;
'testing'调用Perl程序的csh脚本:
#/bin/csh # July 10, 2014, perl tstatus.pl echo "Status=$status" if ($status > 0) then echo "ERROR in status: $status" endif
即使'echo'Status = $ status'表示状态为3,状态:$ status中的'echo'ERROR行也不会执行。
我如何让我的csh检查$状态的值并采取行动? $状态似乎是一个系统variables。
我也尝试过“if($ stats)then”,但是这也行不通。 在csh脚本中没有报告错误。
谢谢。
PS我不做在csh复杂的东西,所以我还没有准备去bash呢。 我已经阅读了“为什么不csh”文件。 谢谢。
echo
命令成功,将$status
重置$status
0.因此if
永远不会看到非零$status
。
因此,解决方案是消除echo
命令或在perl
命令之后立即保存$status
的值。
我最近自己遇到了类似的问题 。