1. ホーム
  2. bash

[解決済み] Bashでループから抜け出すには?

2022-03-09 20:30:20

質問

テキストを処理するBashスクリプトを書きたいのですが、whileループが必要な場合があります。

例えば、C言語のwhileループ。

int done = 0;
while(1) {
  ...
  if(done) break;
}

これに相当するBashスクリプトを書きたいのです。しかし、私がいつも使っているのは、そして私が読んだすべての古典的な例が示しているように、これだ。

while read something;
do
...
done

をどのように行うかについてのヘルプは提供されません。 while(1){}break; これはCでよく定義され、広く使われているもので、stdinからデータを読み込む必要はありません。

どなたか、上記のC言語のコードと同等のBashのコードを教えていただけませんか?

どのように解決するのですか?

でそれほど違いはありません。 bash .

workdone=0
while : ; do
  ...
  if [ "$workdone" -ne 0 ]; then
      break
  fi
done

: はノーオペコマンドで、その終了ステータスは常に0なので、ループは workdone に0以外の値を与える。


の値を設定し、テストする方法はたくさんあります。 workdone ループを抜けるために、上で紹介したものはPOSIX互換のシェルで動作するはずです。