web-dev-qa-db-ja.com

シェル構文:行を分割するために\を正しく使用する方法?

リストの行を分割する適切な方法は

command1 && \
command2

そうではないことが判明しました。\は必要ありません

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

同じことがパイプでも同じように機能します|

パイプライン処理とリストに関するbashのmanページのセクションでは、これについては何も明らかにされていません。したがって、私の質問は、長い行を分割するための\の適切な使用法は何ですか?

57

ステートメントが継続せずに正しい場合は、\を使用する必要があります。したがって、&&でコマンドを終了できないため、以下は円記号なしで機能します。

echo 1 &&
echo 2

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

echo 1 2 3 \
4

または

echo 1 \
&& echo 2

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

68
choroba

巨大なIT企業での実務経験で遭遇したスクリプトスタイルのガイドラインの1つは、シェルスクリプトで1行あたり80文字を超えないようにし、改行後はインデントすることを義務付けていました。また、パイプまたは&&または||の前に改行する必要がありました。お気に入り :

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

目標は明確な読みやすさを持つことでした。

22
saussure