Откуда появилась фраза "Конец файла" для использования здесь с документами?
something <<EOF
something else 1
something else 2
...
EOF
Я предположил, что существует некоторая история, которая могла бы оправдать неинтуитивную предельную строку, и чтение статьи в Википедии было бы недостаточным: почему "файл" все еще пронизывает программы, а потоки и блоки чаще используются для создания здесь документов?
Это происходит из традиции Unix, где все является файлом. "Файл" в этом контексте не означает "diskfile" и не обязательно подразумевает какие-либо связанные метаданные - это означает что-то совсем немного ближе к тому, что сейчас называется "потоком". В большинстве случаев "файл" - это "что-то доступное файловым дескриптором". Другими словами, STDIN процесса, который вы порождаете, является файлом, а EOF heredoc отмечает его конец.
Поскольку EOF, стоящий для "конца файла", традиционно использовался в качестве имени маркера или исключения, возвращаемого при чтении файла в программе, чтобы указать, что конец файла достигнут. Это очень старое использование.
Поэтому, когда вы пишете здесь документы, и вам нужен токен, чтобы отметить его конец (что должно быть чем-то маловероятным случайно), "EOF" возникает совершенно естественно, если вы привыкли использовать эту фразу для обозначения конечных элементов, файловых маркеров. Так как это использовалось так часто, его подбирают даже люди, которые уже не привыкли думать об EOF, потому что они видят, что они используются в примерах, когда они учатся использовать здесь документы. И поэтому распространение распространяется.
Это просто конвенция. В сценариях оболочки вы можете использовать почти все, например,
cat <<stackoverflow
something else 1
something else 2
...
stackoverflow
в bash
делает то же самое, как если бы он сказал EOF
.
EOF
- это "настоящая вещь", и люди привыкли к этому ...?python
качестве одного из ваших тегов. Здесь документам не нужен разделитель вpython
так как используются тройные кавычки, вы имели в видуperl
?