Tato otázka již má odpovědi zde :
Komentáře
- Viz 3.6.6 Zde Documents in the bash manual
Answer
<<-EOF
bude ignorovat úvodní karty ve vašem heredoc, zatímco <<EOF
nebude. Tedy:
cat <<EOF Line 1 Line 2 EOF
vyprodukuje
Line 1 Line 2
while
cat <<-EOF Line 1 Line 2 EOF
vytváří
Line 1 Line 2
odpověď
Pokud používáte <<-EOF
, doporučuji manuálovou stránku Bourne Shell:
Pokud je však spojovník (-) připojen k < <:
-
úvodní karty jsou ze slova odstraněny před přečtením vstupu do shellu (ale po substituce parametrů a příkazů se provádí ve Wordu);
-
úvodní karty jsou při čtení a před porovnáním každého řádku se slovem odstraněny ze vstupu shellu; a
-
vstup shellu se čte až k prvnímu řádku, který doslova odpovídá výslednému slovu, nebo k EOF.
Takže <<-
umožňuje odsazení obsahu tohoto dokumentu pro lepší čitelnost.