• ベストアンサー

一行で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 なぜうまくいかないのでしょうか? 教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.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 と書いてあります。

noname#214079
質問者

お礼

> doのあとで改行する人がいますが、bashは文の途中でも場所によっては改行を入れてもいい > ので、do のあとに改行を入れてもエラーにならないと言うだけです。 そういうことだったのですね。 良く理解できました。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう