bashでの話。
for x in 1 2 3 do echo $x done
この4行のスクリプトは特に問題もありません。行数を減らすため、改行をセミコロンに置き換えてみます。まずは1行目と2行目を、セミコロンをはさんでくっつける。
for x in 1 2 3; do echo $x done
これはOK。さらに2行目と3行目をくっつける。
for x in 1 2 3; do echo $x; done
これもOK。となると、次もOKでしょうよ、当然。
for x in 1 2 3; do; echo $x; done
ガーン、ダメなんだってぇ。
syntax error near unexpected token `;'
doの直後のセミコロンを取ればいいそうです。
for x in 1 2 3; do echo $x; done
ウーム、「改行 ←→ セミコロン」という単純なルールじゃ対応できないってことだけど、なんでこんなルールなの?*1
- bashのfor文に関する別な話題 → 「シェル(bash)のfor文の違いを吸収するMakefileの書き方」
*1:実は「そんなもんか」と思っていたりもしたのですが、露骨に構文エラーを出されると、なんか理不尽だと感じてしまうのです。