我有一个脚本可以确定模块加载状态。
在下面的代码第 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
没有记录
module
适当设置退出状态。如果没有,您仍然可以检查其输出,例如
module load hercules/2012 |& if ({ grep error }) then
echo "Error: abhishek Unable to execute module load hercules/2012"
exit
endif
问题在于,在脚本的第一行中,
csh
是用-fe
调用的。根据手册页, -e
的 csh
选项“如果任何调用的命令异常终止或产生非零退出状态,则会导致脚本退出”。因此,一旦脚本出现错误,它就会终止,而不执行脚本中的其余代码。
因此,请尝试将
#!/bin/csh -fe
更改为 #!/bin/csh -f
。