是否有可能在bash中打破for循环?

时间:2018-03-20 06:37:55

标签: bash for-loop

我有以下情况。 我在bash中迭代数组元素并比较值。

#!/bin/bash

for (( i = 0 ; i <=m-1 ; i++));

do for (( j = 0 ; j <=n-1 ; j++));

   do

     if [ "${sourcedisktype[i]}" == "SSD" -a "${targetdisktype[j]}" == "BSAS" ];

     then echo "volume cannot be moved1";

     elif [ "${sourcedisktype[i]}" == "SSD" -a "${targetdisktype[j]}" == "SAS" ];

     then echo "volume cannot be moved2";

     elif [ "${sourcedisktype[i]}" == "SAS" -a "${targetdisktype[j]}" == "BSAS" ];

     then echo "volume cannot be moved3";else 
       echo "Volume can be moved for this combination of disk type";done;done;

即使一个elif失败,我也不想执行else部分。有没有办法做到这一点。是否有可能在elif之后使用break语句?

1 个答案:

答案 0 :(得分:1)

当然你可以在bash的循环中break,如果你使用N语句break N,你甚至可以突破N嵌套循环整数>=1

有关详细信息,请查看文档: http://tldp.org/LDP/abs/html/loopcontrol.html

你实际上也可以使用continue N但是对其他人来说可能非常棘手且难以理解,因此我不建议使用它。

PS:不要忘记正确缩进代码以便其他人快速理解它,甚至为自己理解,我可以肯定,如果你试图在几个月/几年内重新阅读你的代码会很痛苦。你会后悔没有缩进/评论它。