なぜ「do」を「for」と同じ行に入れるのですか?

なぜ「do」を「for」と同じ行に入れるのですか?

1. まとめ

なぜ必要なのかわかりません。E010バーバットルール


2. 細部

私は使うバックショットファイルを確認するために使用されます.sh。 E010ルール:

する同じ行にない~のため

forバックショット:

  • 正しい:

    #!/bin/bash
    for f in bash/*.sh; do
        sashacommand "$f"
    done
    
  • 間違い:

    #!/bin/bash
    for f in bash/*.sh
        do sashacommand "$f"
    done
    

私がなぜ同じ立場にいるべきかについてのfor妥当な主張はありますか?do


3. 役に立たない

次のページに私の質問に対する回答がありません。

  1. Google
  2. 最高のコーディング方法に関する記事(はい)
  3. bashate ドキュメント。私が見つけたただ:

    制御ブロック内で一貫性を維持するのに役立つ一連の規則。展開するのは少し「面白い」ので、連続する長い行では無視されます。

ベストアンサー1

構文的には、次の2つのコードスニペットは正確で同じです。

for f in bash/*.sh; do
    sashacommand "$f"
done
for f in bash/*.sh
    do sashacommand "$f"
done

後者はできる可能doループ本体内のコマンドを少し難読化するため、読みにくいと言われています。ループに複数のコマンドが含まれていて、次のコマンドが新しい行にある場合、混乱はさらに強調されます。

for f in *
    do cmd1
    cmd2
done

...しかし、「エラー」とマークするのは客観的な事実ではなく、誰かの個人的な意見です。

私が言うことは、ループにコマンドを追加したい場合は、doコードを読んでいる人の目に一貫して読みやすいコードを作成する限り、自由にそれを行うことができるということです。

通常、ほとんどすべてを;改行文字に置き換えることができます。改行文字は;すべてコマンドターミネーターです。 「(このループdoで)実行する必要がある作業は次のとおりです。」を意味するキーワードです。for

for f in *; do ...; done

同じですか?

for f in *
do
   ...
done

そして

for f in *; do
   ...
done

そして

for f in *
   do ...
done

どちらかを使用する理由は、読みやすさと地域/個人スタイルの規則によるものです。


個人的な考え:

ループヘッダ内非常に長いdo、私は次のような新しい行を追加するのが合理的だと思いました。

for i in animals people houses thoughts basketballs bees
do
    ...
done

または

for i in        \
    animals     \
    people      \
    houses      \
    thoughts    \
    basketballs \
    bees
do
    ...
done

then陳述も同じだif

ただし、これは個人のスタイルの好みやチーム/プロジェクトが使用するコーディングスタイルによって異なります。

おすすめ記事