确定C shell中的命令状态

use*_*443 1 shell tcsh

我编写了我的c shell脚本,需要确定命令状态.在下面的程序 line 4命令没有成功.但我的状态仍然存在0.我不懂为什么.根据我的理解,我应该得到1.我对吗?Line No 3命令成功.我知道这是一个非常基本的问题,但它不是家庭作业.我们需要确定工作状态所以我尝试过简单的脚本

Line 4 给我一个错误,它无法加载此版本工具

1 #!/bin/csh -f
2         source /global/etc/csh.cshrc
3         module unload her
4         module load her/2012
5         echo $status
6         if ( $status != 0) then
7          echo "Error: abhishek Unable to execute  module load her/2012"
8          exit
9         endif
Run Code Online (Sandbox Code Playgroud)

Bru*_*ett 9

问题是你在echo命令后测试状态.echo命令成功,因此它将状态重置为0.以下是一些显示问题的示例代码

#!/bin/csh -f

sh -c "exit 2"
echo status is $status or $?
echo status is $status or $?
Run Code Online (Sandbox Code Playgroud)

哪个输出

status is 2 or 2
status is 0 or 0
Run Code Online (Sandbox Code Playgroud)

您可以做的另一件事是使用#!/ bin/csh -fe,这会导致脚本在发生错误时立即退出.