我编写了我的c shell脚本,需要确定命令状态。在下面的程序中
line 4
命令未成功。但我的状态仍为0
。我不懂为什么。
根据我的理解,我应该1
。我对吗? Line No 3
命令成功。
我知道这是一个非常基本的问题,但它不是家庭作业。我们需要确定工作状态
所以我尝试了简单的脚本
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
答案 0 :(得分:7)
问题是您正在测试echo命令后的状态。 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,这会导致脚本在发生错误时立即退出。
答案 1 :(得分:0)
不太对劲。 保存了模块加载命令的状态 然后是你咨询的保存状态!
set saved_status = $ status; echo“status = $ saved_status”; if($ saved_status!= 0)...