Whileループを必要とする可能性のあるテキストを処理するBashスクリプトを作成したい。
たとえば、Cのwhileループ:
int done = 0;
while(1) {
...
if(done) break;
}
それと同等のBashスクリプトを書きたいです。しかし、私が普段使っているのは、私が読んだすべての古典的な例が示しているように、これです:
while read something;
do
...
done
while(1){}
およびbreak;
の実行方法については何の助けもありません。これは、Cで適切に定義され、広く使用されており、stdinのデータを読み取る必要はありません。
上記のCコードに相当するBashで誰かが私を助けることができますか?
bash
でもそれほど違いはありません。
done=0
while : ; do
...
if [ "$done" -ne 0 ]; then
break
fi
done
:
はno-opコマンドです。終了ステータスは常に0であるため、done
にゼロ以外の値が与えられるまでループが実行されます。
ループを終了するためにdone
の値を設定およびテストする方法は多数あります。上記で示したものは、POSIX互換シェルで動作するはずです。
while true ; do
...
if [ something ]; then
break
fi
done