【问题标题】:Shell script, stop running if failedShell 脚本,如果失败则停止运行
【发布时间】:2018-04-09 15:00:55
【问题描述】:

我有一个反复运行测试的 shell 脚本:

#!/bin/tcsh                                                                                                   
set x = 1                                                                                                     
while ($x <= 10000)                                                                                           
    echo $x                                                                                                   
    ./test                                                                  
    @ x += 1                                                                                                  
end 

我正在尝试调整它以在测试失败时中断循环并停止运行,即测试可执行文件以非零状态返回。我认为以下更改会起作用。

#!/bin/tcsh                                                                                                   
set x = 1 
set y = 0                                                                                                    
while ($x <= 10000 && $y == 0)                                                                                           
  echo $x                                                                                                   
  @ y = ./test                                                                  
  @ x += 1                                                                                                  
end 

但是,我收到错误 @: Expression syntax

您能否告诉我我做错了什么,以及如何在变量中捕获./test 的返回值以便我可以打破循环,或者在遇到测试失败时以其他方式打破循环

【问题讨论】:

标签: linux shell csh tcsh


【解决方案1】:

我不喜欢在 csh 中编写脚本,我强烈建议不要这样做。但是,在这种情况下, csh 似乎做了正确的事情,您可以简单地这样做:

#!/bin/tcsh                                                                                                   
set x = 1                                                                                                     
while ($x <= 10000)                                                                                           
    echo $x                                                                                                   
    ./test || break                                                             
    @ x += 1                                                                                                  
end 

【讨论】:

  • 您能否详细说明为什么您建议不要在 csh 中编写脚本?如果我需要经常编写脚本,我应该努力转向 bash 吗?
猜你喜欢
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多