Bash 成功时退出if/for

Bash 成功时退出if/for,bash,shell,if-statement,for-loop,Bash,Shell,If Statement,For Loop,我创建了一个脚本,用于比较两个文件的值,并在两种情况下输出消息(成功或失败)。但后来我意识到,即使成功了,脚本也会不断地将主变量(jbid)与第二个文件中的所有其他变量(bsid)进行比较,这是我不想要的。我希望第二个for循环在“if”成功时结束 我正在比较tmpcsv2中的“jbsid”和bkid文件中的“bsid” for jbid in `cat tmpcsv`; do #1st Loop for bsid in `cat bkid`; do #2nd Loop

我创建了一个脚本,用于比较两个文件的值,并在两种情况下输出消息(成功或失败)。但后来我意识到,即使成功了,脚本也会不断地将主变量(jbid)与第二个文件中的所有其他变量(bsid)进行比较,这是我不想要的。我希望第二个for循环在“if”成功时结束

我正在比较tmpcsv2中的“jbsid”和bkid文件中的“bsid”

for jbid in `cat tmpcsv`; do #1st Loop

    for bsid in `cat bkid`; do #2nd Loop

        ckid=`echo $bsid | cut -d "," -f1`
        jbsiz=`echo $bsid | cut -d "," -f2`

        if [ "$jbid" -eq "$ckid" ]; then
          printf "There's a match at $ckid\n"  
        else
          printf "No Match Found at $ckid\n"
        fi

    done

    printf "Check for ID $jbid done\n"
    sleep 2
done
我可能使用了一种错误的方法,并打开了一个较短/更脆的表单

只需在真正的条件分支中添加“break”

另外,我对jbid和ckid之间的比较感到困惑。jbsiz是做什么的

for jbid in `cat tmpcsv`; do #1st Loop

    for bsid in `cat bkid`; do #2nd Loop

        ckid=`echo $bsid | cut -d "," -f1`
        jbsiz=`echo $bsid | cut -d "," -f2`

        if [ "$jbid" -eq "$ckid" ]; then
          printf "There's a match at $ckid\n"
          break   
        else
          printf "No Match Found at $ckid\n"
        fi

    done

    printf "Check for ID $jbid done\n"
    sleep 2
done
这将使第二个for循环在匹配中结束

if [ "$jbid" -eq "$ckid" ]; then
          printf "There's a match at $ckid\n"
          break   
        else
          printf "No Match Found at $ckid\n"
        fi

和-else之间添加断点;就像上面的代码一样。

只需在
之后添加
break 2
,然后添加
Yes。。我之前忘了。。。我已经修改了我的脚本,现在它的工作很好…但是,谢谢你的快速回复!!jbsiz->作业大小!我的新脚本-在
cat tmpcsv2
do for bsid in
cat 1bkpsid
do ckid=
echo$bsid | cut-d'、“-f1
jbsiz=
echo$bsid | cut-d”、“-f2
如果[$jbid=$ckid]那么printf“存在$jbid和$ckid的匹配项”\n“sleep 2 break else printf”“在$ckid处找不到$jbid的匹配项\n”fi done printf“检查ID$jbid done\n”sleep 2 doneSorry Fells…你们三个都是正确的…但我只能选择一个(我尝试了,但只允许一个正确答案!)感谢快速回复!
if [ "$jbid" -eq "$ckid" ]; then
          printf "There's a match at $ckid\n"
          break   
        else
          printf "No Match Found at $ckid\n"
        fi