确定C shell中的命令状态

时间:2013-05-16 12:39:15

标签: 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

2 个答案:

答案 0 :(得分:7)

问题是您正在测试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,这会导致脚本在发生错误时立即退出。

答案 1 :(得分:0)

不太对劲。 保存了模块加载命令的状态 然后是你咨询的保存状态!

set saved_status = $ status; echo“status = $ saved_status”; if($ saved_status!= 0)...