0

我有一个脚本可以确定模块加载状态。

在下面的代码第 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
4

2 回答 2

1

没有记录module适当地设置退出状态。如果没有,您仍然可以检查其输出,例如

module load hercules/2012 |& if ({ grep error }) then
    echo "Error: abhishek Unable to execute  module load hercules/2012"
    exit
endif
于 2014-07-07T07:33:12.543 回答
0

问题是在脚本的第一行中,csh使用-fe. 根据手册页,“如果任何调用的命令异常终止或产生非零退出状态,则导致脚本退出”的-e选项。csh因此,一旦脚本出现错误,它就会终止,而无需遍历脚本中的其余代码。

因此,尝试更改#!/bin/csh -fe#!/bin/csh -f.

于 2013-05-23T20:56:47.747 回答