- ベストアンサー
一行でdoループ
debian wheezy で 一行でdoループをやろうとしたのですが、失敗します。 $ for i in {1..2} ; do ; pwd ; done bash: 予期しないトークン `;' 周辺に構文エラーがあります $ echo $SHELL /bin/bash $ echo $BASH_VERSION 4.2.37(1)-release なぜうまくいかないのでしょうか? 教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
基本的なfor-do-doneの文法を間違えてます。 改行して書くと、 for i in {1..2} do pwd done です。 改行の所に、; を入れると1行で書けます。 doのあとで改行する人がいますが、bashは文の途中でも場所によっては改行を入れてもいいので、do のあとに改行を入れてもエラーにならないと言うだけです。 then や else の後も、改行を入れないのが本来の文法規則です。 文法規則については、詳しくは、man bash を見てください。 for name [ in word ] ; do list ; done と書いてあります。
お礼
> doのあとで改行する人がいますが、bashは文の途中でも場所によっては改行を入れてもいい > ので、do のあとに改行を入れてもエラーにならないと言うだけです。 そういうことだったのですね。 良く理解できました。 どうもありがとうございました。