「<<-EOF」と「<の違いは何ですか?

「<<-EOF」と「<の違いは何ですか?

私はこのトピックを検索し、すべての結果について話しました<<EOF。ただし、使用されているスクリプトは表示されますが、<<-EOFインターネット検索ではどこにも見つかりません。では、<<-EOFbashスクリプト間の違いは何ですか?<<EOFありがとうございます。

答え1

<<-EOF区切られた文書の前のタブは無視されますが、<<EOFそうではありません。したがって:

cat <<EOF
    Line 1
    Line 2
EOF

生産する

    Line 1
    Line 2

しかし、

cat <<-EOF
    Line 1
    Line 2
EOF

生産する

Line 1
Line 2

答え2

を使用している場合は、<<-EOFBourne Shellのマニュアルページをお勧めします。

ただし、<<にハイフン(-)が追加された場合:

  1. シェル入力を読む前に、単語から先行タブ文字を削除します(ただし、引数とコマンドの置換が単語で行われた後)。

  2. 前のタブ文字は、シェル入力を読み取るときと各行を単語と比較する前に削除されます。

  3. シェル入力は、文字通り結果ワードに一致する最初の行またはEOFとして読み込まれます。

これ<<-により、ここにある文書の内容をインデントして読みやすさを向上させることができます。

関連情報