我有一个确定模块加载状态的脚本。
在下面的代码第4行中,它给出了我无法加载特定版本的错误,而不是在我检查状态之后。理想情况下,我应该获得1作为状态但它仍然是零。
然后我也用命令行检查了。与module load her/2012;echo $status
一样。
我无法理解为什么我会得到状态码0.更具体的问题是,如何确定模块加载命令的状态
1 #!/bin/csh -fe
2 source /global/etc/csh.cshrc
3 module unload hercules
4 module load hercules/2012
5 if ( $status != 0) then
6 echo "Error: abhishek Unable to execute module load hercules/2012"
7 exit
8 endif
答案 0 :(得分:1)
没有记录module
正确设置退出状态。如果它没有,你仍然可以检查它的输出,如
module load hercules/2012 |& if ({ grep error }) then
echo "Error: abhishek Unable to execute module load hercules/2012"
exit
endif
答案 1 :(得分:0)
问题在于,在脚本的第一行中,使用csh
调用-fe
。根据手册页,如果任何被调用的命令异常终止或产生非零退出状态,-e
的{{1}}选项会导致脚本退出。“因此,只要脚本出现错误,它就会终止,而不会通过脚本中的其余代码。
因此,请尝试将csh
更改为#!/bin/csh -fe
。