2013-05-16 80 views
1

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

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

停止使用'csh'。 –

+0

我明白如果你不比你不应该尝试。但是在现有的代码中它被实现了,我的客户只想要解决这个脚本的问题 – user765443

+0

@WilliamPursell:很好的建议,但不相干; bash会发生同样的问题。 –

回答

7

的问题是您的回音后测试状态命令。 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会导致脚本在出现错误时立即退出。

+0

非常感谢回复。我正在检查状态,所以我已经添加到code.But状态不存在主文件 – user765443

+0

如果您想多次检查状态,请将其保存在一个变量中:'set saved_status = $ status; echo“status = $ saved_status”;如果($ status!= 0)...' –

0

不完全正确。 已保存模块加载命令 的状态,那么它就是您查阅的保存状态!

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