2013-05-16 111 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)...