ここで<<を使用して文字列をフォーマットする一般的な方法ではなく、制限された文字列(<<-)を使用することを選択した場合はいつですか?

ここで<<を使用して文字列をフォーマットする一般的な方法ではなく、制限された文字列(<<-)を使用することを選択した場合はいつですか?

The - option to mark a here document limit string (<<-LimitString) will suppress leading tabs (but not spaces) in the output.

「here」メソッドを使用してコマンドを処理するときに、誰かが先行タブを削除したいのはなぜですか?出力の読みやすさに関するものですか、それとも出力を別のものに渡したい場合は、出力のクリーンアップに関するものですか?

答え1

ソースコードの読みやすさについてです。を使用すると、<<-次のように書くことができます。

foo() {
    cat <<-EOF
        hello
        EOF
    echo do something else
}

変える

foo() {
    cat <<-EOF
hello
EOF
    echo do something else
}

より論理的なインデントを提供します。

(SEは投稿のレンダリングされたビューでタブを空白として表示するため、4つの空白ブロックにタブがあると想像する必要があります。)またはコピーして貼り付けます。ソースコードから、必要に応じてコンテンツの混乱を減らす必要があります。 )

私の考えでは、「制限文字列」というフレーズは、ここにある文書の閉じ区切り文字を指しているようですが、これは常に持っているものです。追加の変更はタブ処理です-。また、<<<here文書ではなく非標準のhere文字列です。

関連情報