Здравствуйте! Я прохожу курс “от 0 до Linux админа” вот здесь https://yodo.im/courses/linux/?v=1d20b5ff1ee9, и у меня возникла проблема с пониманием разницы между редиректом и подстановкой команд в heredocs.
Я заметил, что у heredocs два различных поведения: в случае редиректа он происходит на открывающей строке, а в случае подстановки команд — после закрывающего маркера. Например, в первом случае, когда я использую:
cat <<EOL > heredoc.txt
Line 1: This is the first line of text.
Line 2: This is the second line of text.
Line 3: This is the third line of text.
EOL
Редирект в heredoc.txt осуществляется на первой строке команды, прежде чем будут записаны содержимое heredoc.
А вот во втором случае подстановка происходит уже после завершения heredoc:
tempvar=$(cat <<EOL
Line 1: This is the first line of text.
Line 2: This is the second line of text.
Line 3: This is the third line of text.
EOL
)
Мне не совсем понятно, почему закрытие подстановки команд происходит позже, чем редирект. Почему не должно происходить так же, как с редиректом, где все происходит на открывающей строке?
Буду признателен за пояснение!