linux - Shell脚本,失败则停止运行

标签 linux shell csh tcsh

我有一个重复运行测试的 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 的返回值,以便我可以打破循环,或者以其他方式打破循环遇到测试失败时

最佳答案

我不喜欢在 csh 中编写脚本,我强烈反对它。然而,在这种情况下,csh 似乎做对了,您可以简单地做:

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

关于linux - Shell脚本,失败则停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49736037/

相关文章:

linux - Jenkins 可以在无代理的 linux 主机上运行 shell 脚本吗

node.js - 如何执行 `cd` 并在 csh/sh 脚本中调用一些 npm 脚本?

linux - 如何在 Shell 脚本中制作 scp 询问我的密码

csh - 如何根据 sed 结果设置 env(对于 gnome-keyring-daemon)

linux - Perl replace 从脚本而不是 bash 生成空文件

shell - 具有多个条件的 sed

linux - 有没有办法读取文本文件并使用其中的单词作为输入?

xml - 体面的 KDE XML 查看器?

c - x86 程序集中出现奇怪的段错误

Linux通过ssh查找文件名部分已知的文件