可能かどうかわかりませんが、私はwhile
ループ内のif
ステートメントから抜け出そうとしています。私はwhile
ループを終了したくないです。私はexit
とbreak
を使ってみましたが、どちらもwhileループを終了します。whileループ中のif文の中断
問題は、探しているファイルがどのフォルダにあるのかわからないことです。そのため、検索したファイルと一致するときに現在のif
文を終了したいのです次のシリアル番号。
シリアル番号のリストを含むdrives-fw-sn.txt
というテキストファイルがあります。コードの内訳:
- Iは
while
ループ - を用い
drives-fw-sn.txt
から一度に1つのシリアル番号で読み出しIファイルの検索は、私は、シリアル番号の最初の発生を印刷find
- を用い
output_log
と呼ばれます見つかったファイル - 次から私は、ログが発見されたことを印刷し、
をしたい。ここが(私のコードの抜粋です3つ以上のテストフォルダです)。 while
ループを終了するコマンドは、まだexit
コマンドを含んでいます。
while read node; do
if find ./test1/*log* -maxdepth 2 -type f -name output_log -exec egrep -m 1 $node {} \; ; then
echo "Log SN $node available"
exit 1
fi
if find ./test2/*log* -maxdepth 2 -type f -name output_log -exec egrep -m 1 $node {} \; ; then
echo "Log SN $node available"
exit 1
fi
if find ./test3/*log* -maxdepth 2 -type f -name output_log -exec egrep -m 1 $node {} \; ; then
echo "Log SN $node available"
exit 1
fi
done < drives-fw-sn.txt
bashでcase文を使ってみましたか? –
@KaranShah私はcase文を使うことを考えましたが、私のアプリケーションには適していないと思われます。 – stevo
'find'の終了ステータスは' -exec'で実行されたコマンドの終了ステータスとは無関係です。 'find'によっていくつのファイルが見つけられますか? 'find'を実行する際に実際のエラーがない限り、終了ステータスは0です。 – chepner