1

我编写了需要确定命令状态的 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
4

2 回答 2

10

问题是您正在测试 echo 命令之后的状态。echo 命令成功,因此将状态重置为 0。这是一些示例代码来显示问题

#!/bin/csh -f

sh -c "exit 2"
echo status is $status or $?
echo status is $status or $?

哪个输出

status is 2 or 2
status is 0 or 0

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

于 2013-05-16T16:17:06.050 回答
0

不太对。保存了模块加载命令的状态后,您查询的就是保存的状态!

设置保存状态 = $状态;echo "status = $saved_status" ; 如果 ( $saved_status != 0 ) ...

于 2016-05-17T13:50:57.180 回答