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. 役に立たない
次のページに私の質問に対する回答がありません。
- 最高のコーディング方法に関する記事(はい)
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
。
ただし、これは個人のスタイルの好みやチーム/プロジェクトが使用するコーディングスタイルによって異なります。