To pytanie ma już tutaj odpowiedzi :
Komentarze
Odpowiedź
<<-EOF
zignoruje początkowe tabulatory w twoim heredoc, podczas gdy <<EOF
nie. Zatem:
cat <<EOF Line 1 Line 2 EOF
zwróci
Line 1 Line 2
, podczas gdy
cat <<-EOF Line 1 Line 2 EOF
generuje
Line 1 Line 2
Odpowiedź
Jeśli używasz <<-EOF
, polecam stronę podręcznika Bourne Shell:
Jeśli jednak łącznik (-) zostanie dodany do < <:
-
początkowe zakładki są usuwane ze słowa przed odczytaniem wejścia powłoki (ale po podstawianie parametrów i poleceń odbywa się na słowie);
-
początkowe tabulatory są usuwane z wejścia powłoki podczas jego czytania i przed porównaniem każdej linii ze słowem; oraz
-
wejście powłoki jest odczytywane do pierwszej linii, która dosłownie pasuje do wynikowego słowa lub do EOF.
Więc <<-
pozwala na wcięcie treści tutaj dokumentu dla lepszej czytelności.