Операторы перенаправления «<<» и «<< -» позволяют перенаправлять строки, содержащиеся во входном файле оболочки, называемом «здесь-документ», на ввод команды.
Здесь-документ должен рассматриваться как одно слово, которое начинается после следующего и продолжается до тех пор, пока не появится строка, содержащая только разделитель и a, без символов между ними. Затем начинается следующий документ, если он есть. Формат следующий:
[n]<<word
here-document
delimiter
где необязательный n представляет номер дескриптора файла. Если число опущено, то здесь документ ссылается на стандартный ввод (дескриптор файла 0).
Если какой-либо символ в слове заключен в кавычки, разделитель должен быть сформирован путем выполнения удаления слова в кавычках, а строки документа здесь не должны расширяться. В противном случае разделителем должно быть само слово.
Если никакие символы в слове не заключены в кавычки, все строки здесь-документа должны быть раскрыты для раскрытия параметров, подстановки команд и арифметического раскрытия. В этом случае входные данные ведут себя как внутренние двойные кавычки (см. Двойные кавычки). Однако символ двойной кавычки ('"') не должен обрабатываться специально в документе здесь, за исключением случаев, когда двойная кавычка появляется внутри" $ () "," `` "или" $ {} ".
Если символ перенаправления "<< -", все ведущие <tab>
символы должны быть удалены из строк ввода и строки, содержащей конечный разделитель. Если в строке указано более одного оператора «<<» или «<< -», то здесь документ-документ, связанный с первым оператором, должен быть сначала предоставлен приложением и сначала должен быть прочитан оболочкой.
Когда здесь документ считывается из оконечного устройства и оболочка является интерактивной, он должен записать содержимое переменной PS2, обработанной, как описано в разделе «Переменные оболочки», в стандартную ошибку перед чтением каждой строки ввода, пока разделитель не будет распознан.
Некоторые примеры еще не приведены.
cat
. Попробуйтеpsql ... << EOF ...
см. Также «здесь строки». mywiki.wooledge.org/BashGuide/InputAndOutput?#Here_Strings