0

2つのファイルから値を比較するためのスクリプトを作成し、両方の場合(成功または失敗)のメッセージを出力しました。しかし、成功した場合でも、スクリプトはメイン変数(jbid)を2番目のファイルの他のすべての変数(bsid)と比較し続けますが、これは望ましくありません。「if」が成功したときに2番目のforループを終了させたい。

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

私はこれを行うのに間違った方法を使用していて、より短い/より鮮明なフォームも開いている可能性があります!

4

3 に答える 3

1

真の条件分岐に「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
于 2013-03-16T19:12:47.990 に答える
1
if [ "$jbid" -eq "$ckid" ]; then
    printf "There's a match at $ckid\n"   
    break

これにより、2番目のforループが一致で終了するはずです。

于 2013-03-16T19:12:56.477 に答える
0
if [ "$jbid" -eq "$ckid" ]; then
          printf "There's a match at $ckid\n"
          break   
        else
          printf "No Match Found at $ckid\n"
        fi

間にブレークを追加しthen - elseます; 上記のコードのように。

于 2013-03-16T19:16:43.487 に答える