If else 循环在 csh shell 脚本中不起作用

问题描述 投票:0回答:1

这是示例 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]

shell perl exit-code
1个回答
0
投票

不熟悉

csh
,但我相信
$status
是csh的特殊变量,相当于
$?
.

所以第 4 行

$status
语句中的
if
将由第 3 行
echo $status
的退出代码更新,始终等于 0.

尝试用

$status
或其他任何东西改变你的
$rc
变量。

我宁愿建议你用 bsh/bash 重写你的 shell 脚本。

© www.soinside.com 2019 - 2024. All rights reserved.