这是示例 perl 代码。 abc.pl
my $a=0; my $b=0; my $c=0;
my $sum = $a+$b+$c; $ex = 0;
if($sum == 0){
print "success"; print " $ex \n";
}else{
$ec=1 ; print "Not success"; print " $ex \n";
}
exit $ex;
这是我的shell脚本
set ecd = `abc.pl`
set status = $?
echo $status
if ( $status == 0 ) then
echo "Here Status is $status"
else
echo "Status is $status"
endif
echo $status
现在我遇到了 if else 循环的问题, status 的值似乎在 if 循环之前和之后发生变化,每次它只在 if 条件下打印 msg。 示例输出。
1
Here Status is 0
0
请帮忙改正。我认为如果反映上一个命令的状态?请建议如何使这个 if 循环正常工作。 请建议我如何在基础知识方面做得更好。非常感谢您的帮助。非常感谢。 这是问题的延续:[https://stackoverflow.com/questions/75523005/how-to-capture-exit-code-of-a-perl-script-which-is-called-from-a-shell-剧本][1]
不熟悉
csh
,但我相信$status
是csh的特殊变量,相当于$?
.
所以第 4 行
$status
语句中的 if
将由第 3 行 echo $status
的退出代码更新,始终等于 0.
尝试用
$status
或其他任何东西改变你的$rc
变量。
我宁愿建议你用 bsh/bash 重写你的 shell 脚本。