シェル構文:改行に\を正しく使用する方法は? [コピー]

シェル構文:改行に\を正しく使用する方法は? [コピー]

私はリストの行を囲む適切な方法が次のようになると思いました。

command1 && \
command2

これは事実ではなく、必要もないことがわかりました。\

$ [  $(id -u) -eq 1000  ] &&                                                   
> echo yes
yes

パイプも|同じように動作します。

Bashのマニュアルページのパイプとリストのセクションにはこれについて何も記載されていません。だから私の質問は:\長い行を壊す正しい使い方は何ですか?

答え1

続行せずに文が正しい場合は必須です\。したがって、コマンドを終了できないため、次はバックスラッシュなしで実行されます&&

echo 1 &&
echo 2

これにはバックスラッシュが必要です。

echo 1 2 3 \
4

または

echo 1 \
&& echo 2

それ以外の場合、bashは次の行を待たずに最初の行を処理した直後にコマンドを実行します。

答え2

私が大規模なIT企業で働いている間、私たちに触れたスクリプトスタイルガイドの1つは、シェルスクリプトで1行に80文字以下を使用し、改行の後ろにインデントする必要がありました。また、パイプや&&または||前にも切らなければなりません。良い:

command1 \
  && command2 \
  || command3 \
  | command4

目標は明確な読みやすさです。

関連情報