コマンドラインでforループを作成するにはどうすればよいですか?

簡単なfor loop

#!/bin/bash for i in `seq 1 10`; do echo $i done 

bashスクリプトのAFAIKセミコロンにより、シェルは現在のコマンドを同期的に実行してから次のコマンドに進みます。Enterキーを押すと、次のコマンドを入力できず、すぐにバッファがフラッシュされることを除いて、文字通り同じです。

シェルが次の行を解釈できない理由

for i in `seq 1 10`; do; echo $i; done 

これは実際にはどのようにfor loop動作しますか?

回答

ivからのforループの構文id = “5afd81afc1″>

マニュアルページは

for name [ [ in [ word ... ] ] ; ] do list ; done 

bashマニュアルページ: “コマンドを区切るために、セミコロンではなく1つ以上の新しい行のシーケンスがリストに表示される場合があります。”

ただし、その逆は当てはまりません。できません。ニューラインを任意に置き換えるセミコロン付き。上記の構文規則に従い、doの後に余分なセミコロンを挿入しない限り、複数行のスクリプトを1行に変換できます。

for i in `seq 1 10`; do echo $i; done 

コメント

  • @ dr01が指摘したように、最後のスクリプトが間違っています。。
  • @jake、これは、doの後のセミコロンを削除する必要があることも示しています。さらに、この回答は、「do 'の後にセミコロンを削除する必要がある理由について説明しています。
  • $iはファイル名の一部である必要がありますか?二重引用符が必要ですか?
  • 構文"filename_${i}を実行してから
  • @ user4556274を実行します。 div> for i do; done "も同様に機能するはずです。なぜ'そうしないのですか?

回答

セミコロンdoの後はエラーであり、存在しないはずです。

以下は正しく機能します:

for i in `seq 1 10`; do echo $i; done 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です