Здесь документ

редактировать
Раздел файла исходного кода, который обрабатывается как отдельный файл

в вычисление, здесь документ (здесь-документ, здесь-текст, heredoc, здесь, здесь-строка или здесь-скрипт ) - литерал файла или входной поток литерал: это часть файл исходного кода, который обрабатывается как отдельный файл . Этот термин также используется для формы многострочных строковых литералов, которые используют аналогичный синтаксис, сохраняя разрывы строк и другие пробелы (включая отступы) в тексте.

Здесь документы происходят из оболочки Unix и находятся в оболочке Борна (sh), оболочке C (csh), tcsh (tcsh), KornShell (ksh), Bash и Z shell (zsh) и другие. Здесь строковые литералы в стиле документа встречаются в различных языках высокого уровня, в частности в языке программирования Perl (синтаксис вдохновлен оболочкой Unix) и языках, на которые влияет Perl, например PHP и Ruby. В других языках высокого уровня, таких как Python, JavaScript и Tcl, есть другие возможности для многострочных строк.

Здесь документы могут рассматриваться как файлы или строки. Некоторые оболочки рассматривают их как строку формата литерал, позволяя подстановку переменных и подстановку команд внутри литерала.

Наиболее распространенный синтаксис для документов, созданных в оболочках Unix, - это <<, за которым следует ограничивающий идентификатор (часто слово EOF или END), за которым следует, начиная со следующей строки, текстом, который нужно цитировать, а затем закрывается тем же идентификатором-разделителем в собственной строке. Этот синтаксис обусловлен тем, что здесь документы формально являются потоковыми литералами, а содержимое документа перенаправляется на stdin (стандартный ввод) предыдущей команды; Синтаксис здесь документа аналогичен синтаксису для ввода перенаправления, который является <«принять ввод из следующего файла».

Другие языки часто используют в основном аналогичный синтаксис, но детали синтаксиса и фактические функции могут значительно отличаться. При использовании просто для строковых литералов <<не указывает на косвенность, а является просто соглашением о начальном разделителе. В некоторых языках, таких как Ruby, <<также используется для перенаправления ввода, в результате чего <<используется дважды, если кто-то желает перенаправить из строкового литерала документа здесь.

Содержание

  • 1 Литералы файлов
    • 1.1 Оболочки Unix
      • 1.1.1 Здесь строки
    • 1.2 Microsoft NMAKE
    • 1.3 R
    • 1.4 Сегмент данных
    • 1.5 Схема URI данных
  • 2 Многострочные строковые литералы
    • 2.1 Perl
      • 2.1.1 Perl
      • 2.1.2 PHP
      • 2.1.3 Ruby
    • 2.2 Python
    • 2.3 D
    • 2.4 OS / JCL
    • 2.5 Racket
    • 2.6 Windows PowerShell
    • 2.7 DIGITAL Command Language (DCL)
    • 2.8 YAML
  • 3 См. Также
  • 4 Ссылки
    • 4.1 Общие
  • 5 Внешние ссылки

Файловые литералы

Узко говоря, здесь документы являются файловыми литералами или потоковыми литералами. Они происходят из оболочки Unix, хотя аналогичные возможности доступны на некоторых других языках.

Оболочки Unix

Здесь документы доступны во многих оболочках Unix. В следующем примере текст передается команде tr (транслитерируя нижний регистр в верхний) с использованием документа здесь. Это может быть файл оболочки или вводиться интерактивно по запросу.

$ LANG = C tr a-z A-Z << END_TEXT>один два три>четыре пять шесть>END_TEXT ONE TWO THREE FIVE SIX

END_TEXTиспользовался в качестве ограничивающего идентификатора. Он определяет начало и конец этого документа. Идентификатор перенаправления и ограничивающий идентификатор не нужно разделять пробелом: <или << END_TEXTработают одинаково хорошо.

По умолчанию поведение во многом идентично содержимому двойных кавычек: имена переменных заменяются их значениями, команды в обратных кавычках оцениваются и т. Д.

$ cat << EOF>\ $ Working dir "$ PWD "` pwd`>EOF $ Working dir "/ home / user" / home / user

Это можно отключить, заключив в кавычки любую часть метки, которая затем заканчивается значением без кавычек; поведение по существу идентично тому, если бы содержимое было заключено в одинарные кавычки. Так, например, заключив его в одинарные кавычки:

$ cat << 'EOF'>\ $ Working dir "$ PWD" `pwd`>EOF \ $ Working dir" $ PWD "` pwd`

Двойные кавычки также могут быть используется, но это может вызвать путаницу, потому что раскрытие действительно происходит в строке с двойными кавычками, но не встречается в документе здесь с разделителем в двойных кавычках. Разделители в одинарных и двойных кавычках различаются в некоторых других языках, в частности, в Perl (см. Ниже), где поведение аналогично соответствующим строковым кавычкам.

В оболочке POSIX, но не csh / tcsh, добавление знака минус к << (i.e. <<-) приводит к игнорированию ведущих вкладок. Это позволяет размещать здесь документы в сценариях оболочки (в первую очередь для выравнивания с существующим отступом) без изменения их значения:

Сценарий, содержащий:

LANG = C tr az AZ <<- END_TEXT Here doc with <<- A single space character (i.e. 0x20) is at the beginning of this line This line begins with a single TAB character i.e 0x09 as does the next line END_TEXT echo The intended end was before this line echo and these were not processed by tr echo +++++++++++++++ LANG=C tr a-z A-Z << END_TEXT Here doc with << A single space character (i.e. 0x20) is at the beginning of this line This line begins with a single TAB character i.e 0x09 as does the next line END_TEXT echo The intended end was before this line, echo but because the line with the delimiting Identifier began with a TAB it was NOT recognized and echo the tr command continued processing.

, производит:

HERE DOC WITH <<- A SINGLE SPACE CHARACTER (I.E. 0X20) IS AT THE BEGINNING OF THIS LINE THIS LINE BEGINS WITH A SINGLE TAB CHARACTER I.E 0X09 AS DOES THE NEXT LINE The intended end was before this line and these were not processed by tr +++++++++++++++ HERE DOC WITH << A SINGLE SPACE CHARACTER (I.E. 0X20) IS AT THE BEGINNING OF THIS LINE THIS LINE BEGINS WITH A SINGLE TAB CHARACTER I.E 0X09 AS DOES THE NEXT LINE END_TEXT ECHO THE INTENDED END WAS BEFORE THIS LINE, ECHO BUT BECAUSE THE LINE WITH THE DELIMITING IDENTIFIER BEGAN WITH A TAB IT WAS NOT RECOGNIZED AND ECHO THE TR COMMAND CONTINUED PROCESSING.

Другое использование - вывод в файл:

cat << EOF>~ / testFile001>Этому тексту предшествуют 3 пробела.>В начале этой строки находится один символ табуляции.>Этому тексту ничего не предшествует EOF

Здесь строки

A, здесь строка (доступная в bash, ksh или zsh) синтаксически аналогична, состоит из <<<и влияет на перенаправление ввода от слова (последовательность, обрабатываемая как единица оболочки, в данном контексте обычно строковый литерал). В этом случае для слова используется обычный синтаксис оболочки («здесь строковый синтаксис»), причем единственным синтаксисом является перенаправление: строка здесь - это обычная строка, используемая для перенаправления ввода, а не особый вид строки.

Отдельное слово не нужно заключать в кавычки:

$ LANG = C tr az AZ <<< one ONE

В случае строки с пробелами оно должно быть заключено в кавычки:

$ LANG = C tr az AZ <<< 'one two three' ONE TWO THREE

Это также может быть записано как:

$ foo = 'one two three' $ LANG = C tr az AZ <<< "$foo" ONE TWO THREE

Допускаются многострочные строки, что дает:

$ LANG = C tr az AZ <<< 'one>two three 'ONE TWO THREE

Обратите внимание, что начальные и конечные символы новой строки, если они есть, включены:

$ LANG = C tr az AZ <<< '>one>two three>' ONE TWO THREE $

Ключевое отличие от документов здесь в том, что в этих документах разделители находятся на отдельных строках; начальные и конечные символы новой строки удаляются. В отличие от документов здесь, здесь строки не используют разделители.

Здесь строки особенно полезны для команд, которые часто требуют короткого ввода, таких как калькулятор bc:

$ bc <<< 2^10 1024

Обратите внимание, что здесь поведение строки также может быть выполнено (изменение порядка) через конвейер и команда echo, например:

$ echo 'one two three' | LANG = C tr az AZ ONE TWO THREE

, однако здесь строки особенно полезны, когда последняя команда должна выполняться в текущем процессе, как в случае со встроенной функцией read :

$ echo 'один, два, три' | read -rabc $ echo "$ a $ b $ c"

ничего не дает, в то время как

$ read -rabc <<< 'one two three' $ echo "$a $b $c" one two three

Это происходит потому, что в предыдущем примере конвейер вызывает выполнение readв subprocess, и как таковой не может влиять на среду родительского процесса.

Microsoft NMAKE

В Microsoft NMAKE здесь документы упоминаются как встроенные файлы. Встроенные файлы обозначаются как <<или <: первая запись создает временный файл, вторая запись создает (или перезаписывает) файл с указанным путем. Встроенный файл заканчивается символом <<в отдельной строке, за которым необязательно следует ключевое слово (без учета регистра) KEEPили NOKEEP, чтобы указать, следует ли сохранить созданный файл.

target0: loaded0 command0 << temporary inline file... << target1: dependent1 command1 << temporary, but preserved inline file... <

R

R не имеет файловых литералов, но обеспечивает эквивалентную функциональность путем объединения строковых литералов с функцией преобразования строки в файл. R допускает произвольные пробелы, включая новые строки, в строках. Затем строку можно превратить в дескриптор файла с помощью функции textConnection (). Например, следующее превращает таблицу данных, встроенную в исходный код, в переменную фрейма данных:

str <- "State Population Income Illiteracy Life.Exp Murder HS.Grad Frost Alabama 3615 3624 2.1 69.05 15.1 41.3 20 Alaska 365 6315 1.5 69.31 11.3 66.7 152 Arizona 2212 4530 1.8 70.55 7.8 58.1 15 Arkansas 2110 3378 1.9 70.66 10.1 39.9 65" x <- read.table(textConnection(str), header=TRUE, row.names=1)

Сегмент данных

Perl и Ruby имеют форму литерала файла, который можно рассматривать форма сегмента данных. В этих языках, включая строку __DATA__(Perl) или __END__(Ruby, старый Perl), отмечается конец сегмента кода и начало данных. сегмент. Выполняется только содержимое до этой строки, а содержимое исходного файла после этой строки доступно как файловый объект: PACKAGE :: DATAв Perl (например, main :: DATA) и DATAв Ruby. Как встроенный файл, они семантически аналогичны здесь документам, хотя может быть только один для каждого сценария. Однако в этих языках термин «здесь документ» вместо этого относится к многострочным строковым литералам, как обсуждается ниже.

Схема URI данных

Как далее объясняется в Схема URI данных, все основные веб-браузеры понимают URI, которые начинаются с данных: как здесь документ.

Многострочные строковые литералы

Термин «здесь документ» или «здесь строка» также используется для многострочных строковых литералов в различных языках программирования, особенно Perl (синтаксис зависит от Оболочка Unix) и языки, на которые повлиял Perl, особенно PHP и Ruby. Синтаксис <<в стиле оболочки часто сохраняется, несмотря на то, что он не используется для перенаправления ввода.

Perl-зависимый

Perl

В Perl есть несколько различных способов вызвать здесь документы. Разделители вокруг тега имеют такой же эффект в данном документе, как и в обычном строковом литерале: например, использование двойных кавычек вокруг тега позволяет интерполировать переменные , но использование одинарных кавычек не, а использование тега без них ведет себя как двойные кавычки. Использование обратных кавычек в качестве разделителей вокруг тега запускает содержимое heredoc как сценарий оболочки. Необходимо убедиться, что конечный тег находится в начале строки, иначе тег не будет распознан интерпретатором.

Обратите внимание, что здесь документ не начинается с тега, а начинается со следующей строки. Таким образом, оператор, содержащий тег, продолжается после тега.

Вот пример с двойными кавычками:

my $ sender = "Баффи Истребительница вампиров"; мой $ recipient = "Спайк"; print <<"END"; Dear $recipient, I wish you to leave Sunnydale and never return. Not Quite Love, $sender END

Вывод:

Дорогой Спайк, я желаю, чтобы ты покинул Саннидейл и никогда не возвращался. Не совсем любовь, Баффи Истребительница вампиров

Вот пример с одинарными кавычками:

print <<'END'; Dear $recipient, I wish you to leave Sunnydale and never return. Not Quite Love, $sender END

Вывод:

Уважаемый получатель $, я желаю вам покинуть Саннидейл и никогда не возвращаться. Not Quite Love, $ sender

И пример с обратными кавычками (может быть непереносимым):

my $ shell_script_stdout = <<`END`; echo foo echo bar END

Можно запускать несколько heredocs в одной строке:

say (<

Сам тег может содержать пробелы, что позволяет использовать heredocs без нарушения отступа .

say <<' END'; Hello World END

Хотя, начиная с Perl версии 5.26, heredocs может включать отступ:

#prints "Здравствуйте! \ n "без начальных пробелов. if (1) {print <<~EOF; Hello there EOF }

В дополнение к этим строкам Perl также имеет файловые литералы, а именно содержимое файла, следующего за __DATA__(ранее __END __) в отдельной строке. Он доступен как файловый объект PACKAGE :: DATA, например main :: DATA, и может рассматриваться как форма сегмент данных.

PHP

В PHP здесь документы упоминаются как heredocs . В PHP heredocs не являются строковыми литералами. Текст Heredoc ведет себя так же, как строка в двойных кавычках, но без двойные кавычки. Например, означает `$` будет анализироваться как начало переменной, а `$ {` или `{$` как начало сложной переменной.

Выводит

Это раздел heredoc. За дополнительной информацией обращайтесь к Джо Смиту, вашему местному программисту. Благодарность! Привет, Джо Смит! Фактически, вы можете назначить раздел heredoc переменной!

Строка, содержащая закрывающий идентификатор, не должна содержать никаких других символов, кроме необязательной конечной точки с запятой. В противном случае он не будет считаться закрывающим идентификатором, и PHP продолжит его поиск. Если правильный закрывающий идентификатор не найден, в последней строке скрипта будет ошибка синтаксического анализа.

В PHP 5.3 и более поздних версиях, например в Perl, можно не интерполировать переменные, заключив тег в одиночный цитаты; это называется nowdoc:

$ x = <<<'END' Dear $recipient, I wish you to leave Sunnydale and never return. Not Quite Love, $sender END;

В PHP 5.3+ также можно заключить тег в двойные кавычки, которые, как и Perl, имеют тот же эффект, что и отсутствие окружения тега чем-либо вообще.

Ruby

Следующий код Ruby отображает список покупок с помощью документа здесь.

кладет <

Результат:

$ ruby ​​grocery-list.rb Список покупок ------------ 1. Салатный микс. 2. Клубника. * 3. Зерновые. 4. Milk. * * Organic

<<в документе здесь не указывает перенаправление ввода, но Ruby также использует <<для перенаправления ввода, поэтому перенаправление в файл из документа здесь включает использование <<дважды, в разных смыслах:

File :: open ("список покупок", "w") do | f | f << <

Как и в случае с оболочками Unix, Ruby также позволяет идентификатору-разделителю не начинаться с первого столбца строки, если начало документа здесь помечено немного другим стартовым элементом <<-. Кроме того, Ruby обрабатывает здесь документы как строку в двойных кавычках, и поэтому для интерполяции кода можно использовать конструкцию # {}. Следующий пример иллюстрирует обе эти функции:

now = Time.now plays <<-EOF It's #{now.hour} o'clock John, where are your kids? EOF

Ruby расширяет это, предоставляя «<<~" syntax for omitting indentation on the here document:

put <<~EOF This line is indented two spaces. This line is indented four spaces. This line is indented six spaces. EOF

Обычный отступ двух пробелов опускается во всех строках:

$ ruby ​​indented-heredoc.rb Эта строка имеет отступ в два пробела. Эта строка имеет отступ в четыре пробела. Эта строка имеет отступ в шесть пробелов.

Подобно Perl, Ruby позволяет запускать несколько документов здесь в одной строке:

помещает <\ n "+ <\ nИ теперь все кончено!"

Как и в Perl, в Ruby есть файловые литералы, а именно содержимое файла, следующего за __END__на отдельной строке. Это доступно как объект файла DATAи может рассматриваться как форма сегмента данных.

Python

Python поддерживает многострочные строки как «дословную» строку.

print ("" "Заказчик: Не так уж и много сыра? Продавец: Лучшее в округе, сэр." "")

Начиная с Python 3.6, дословные f-строки поддерживают переменную и интерполяцию выражений.

shop_type = "CHEESE" а ccolade = "finest" print (f "" "Клиент: Не так ли много в магазине {shop_type.lower ()}? Лавочник: {accolade.capitalize ()} в районе, сэр. "" ")

D

Начиная с версии 2.0, D поддерживает здесь строки в стиле документа с использованием префикса 'q'. Эти строки начинаются с q" IDENT, за которым сразу следует новую строку (для произвольного идентификатора IDENT) и заканчиваться IDENT "в начале строки.

int main () {string list = q" IDENT 1. Item One 2. Item Two 3. Пункт 3 IDENT "; writef (list);}

D также поддерживает несколько разделителей кавычек с аналогичным синтаксисом, с такими строками, начинающимися с q" [и заканчивающимися ] "или аналогично для другого символа-разделителя (любого из () <>{} или).

OS / JCL

На языке управления заданиями (JCL), используемых в более ранних операционных системах MVS и текущих z / OS, данные, которые встроены в поток заданий, могут быть идентифицированы * в операторе DD, например // SYSIN DD *или // SYSIN DD *, DLM = textВ первом случае следующие строки текста объединяются в псевдофайл с именем DD SYSIN. Все следующие записи th e объединяются до тех пор, пока не появится другая команда OS / JCL (любая строка, начинающаяся с //), будет найдена последовательность EOF по умолчанию (/ *), или происходит физический конец данных. Во втором случае условия те же, за исключением того, что операнд DLM = используется для указания текстовой строки, сигнализирующей о конце данных, которая может использоваться, если поток данных содержит JCL (опять же, любая строка, начинающаяся с //) или последовательность / *(например, комментарии в исходном коде C или C ++). Следующее компилирует и выполняет программу на языке ассемблера, предоставляемую ассемблеру как встроенные данные.

// AHAR JOB ('ALEX HARRIS') // EXEC ASMLG // SYSIN DD * APROG START XR 15,15 BR 14 END / * // * ЗАДАНИЕ КОНЕЦ

// SYSIN DD * Операторявляется функциональным эквивалентом <. Указывает, что поток данных следует за ним, завершается /*.

Racket

Racket, здесь строки начинаются с #<<, за которыми следуют символы которые определяют терминатор для строки. Содержимое строки включает все символы между строкой #<<и строкой, единственным содержимым которой является указанный терминатор. Точнее, содержимое строки начинается после новой строки, следующей за #<<, и заканчивается перед новой строкой, за которой следует терминатор.

#lang racket (displayln # <

Выводит:

Это простая строка здесь в Racket. * One * Two * Three

Между начальной и завершающие строки; все символы включаются в строку (и терминатор) буквально.

#lang racket (displayln # <

Выводит:

Эта строка охватывает несколько строк и может содержать любой символ Unicode. такие вещи, как λ, ☠, α, β, все в порядке. В следующей строке идет терминатор. Он также может содержать любой символ Unicode, даже пробелы и смайлы!

Здесь строки могут обычно использоваться в контексте где обычные строки будут:

#lang racket (printf # <

Выводы:

Уважаемый Исаак, спасибо за проницательный разговор вчера. Карл

Интересной альтернативой является использование языка extension at-expдля записи @ -выражений. Они выглядят так:

#lang at-exp racket(displayln @ string-append {Это длинная строка, очень удобная, когда длинный кусок текста необходим дед Не беспокойтесь об экранировании "кавычек" или \ экранирований. Также нормально иметь λ, γ, θ,... Код внедрения: @ (number->string (+ 3 4))})

Вывод:

Это длинная строка, очень удобная, когда требуется длинный фрагмент текста. Не беспокойтесь об экранировании "кавычек" или \ экранирований. Также нормально иметь λ, γ, θ,... Код встраивания: 7

@ -выражение не является специфическим и не ограничивается строками, это синтаксическая форма, которая может быть составлена ​​с остальной частью язык.

Windows PowerShell

В Windows PowerShell здесь документы упоминаются как здесь-строки . Здесь-строка - это строка, которая начинается с открытого разделителя (@ "или @ ') и заканчивается закрытым разделителем (" @или '@) на отдельной строке, которая завершает строку. Все символы между открывающим и закрывающим разделителями считаются строковым литералом. Использование строки здесь с двойными кавычками позволяет интерпретировать переменные , а использование одинарных кавычек - нет. Интерполяция переменных происходит с простыми переменными (например, $ x, но НЕ $ x.yили $ x [0]). Вы можете выполнить набор операторов, поместив их в $ ()(например, $ ($ xy)или $ (Get-Process | Out-String)).

В следующем коде PowerShell текст передается в функцию с помощью строки здесь. Функция ConvertTo-UpperCaseопределяется следующим образом:

PS>function ConvertTo-UpperCase ($ string) {$ string.ToUpper ()} PS>ConvertTo-UpperCase @ '>>один два три>>eins zwei drei>>'@ ONE TWO THREE EINS ZWEI DREI

Вот пример, демонстрирующий интерполяцию переменных и выполнение оператора с использованием строки в двойных кавычках:

PS>$ doc, $ marty =' Dr. Эммет Браун ',' Марти Макфлай 'PS>$ time = [DateTime]' Пятница, 25 октября 1985 г. 8:00:00 'PS>$ diff = New-TimeSpan -Minutes 25 PS>@ ">>$ doc: Это мои часы, которые я слышу?>>$ marty: Ага! Сейчас $ ($ time.Hour) o'clock!>>$ doc: Отлично! Мой эксперимент сработал! Они все ровно $ ($ diff.Minutes)) минут медленно.>>$ марти: Погодите минутку. Погодите минутку. Док... Вы говорите мне, что это $ (($ time + $ diff).ToShortTimeString ())?>>$ doc: Точно.>>$ marty: Черт! Я опаздываю в школу!>>"@ Доктор Эммет Браун: Это мои часы, которые я слышу? Марти МакФлай: Ага! Эээ, сейчас 8 часов! Д-р Эммет Браун: Идеально! Мой эксперимент удался! Все они отстают ровно на 25 минут. Марти МакФлай: Погодите. Подождите минуту. Док... Ты хочешь сказать, что сейчас 08:25? Д-р Эммет Браун: Совершенно верно. Марти МакФлай: Черт! Я опаздываю в школу!

Используя вместо этого строку здесь с одинарными кавычками, результат будет выглядеть следующим образом: Вывод:

PS>@ '>>$ doc: Это мои часы, которые я слышу?>>$ Марти: Ага! Эээ, это $ ($ time.Hour) час!>>$ doc: Отлично! Мой эксперимент удался! Все они отстают ровно на $ ($ diff.Minutes) минут.>>$ Марти: Подожди. Подождите минуту. Док... Вы хотите сказать, что это $ (($ time + $ diff).ToShortTimeString ())?>>$ doc: Точно.>>$ marty: Блин! Я опаздываю в школу!>>'@ $ doc: Это мои часы я слышу? $ Марти: Ага! Э-э, это $ ($ time.Hour) час! $ doc: Отлично! Мой эксперимент удался! Все они отстают ровно на $ ($ diff.Minutes) минут. $ Марти: Подожди. Подождите минуту. Док... Вы хотите сказать, что это $ (($ time + $ diff).ToShortTimeString ())? $ doc: Совершенно верно. $ marty: Черт! Я опаздываю в школу!

DIGITAL Command Language (DCL)

В сценариях DCL любая строка ввода, которая не начинается с символа $, неявно обрабатывается как ввод для предыдущей команды - все строки, которые Не начинайте с $ здесь-документы. Входные данные либо передаются программе, либо на них можно явно ссылаться логическим именем SYS $ INPUT (аналогично концепции Unix stdin ).

Например, явная ссылка на вход как SYS $ INPUT:

$ TYPE SYS $ INPUT Этот текст будет напрямую отображаться на экране командой TYPE. $! другие команды...

производит:

Этот текст будет напрямую выведен на экран командой TYPE.

Кроме того, команда DECK, первоначально предназначенная для поддержки перфокарт (отсюда и ее название: она означала начало колоды данных ), может использоваться для ввода данных предыдущей команды. Входная колода заканчивается либо командой $ EOD, либо шаблоном символов, заданным параметром / DOLLARS для DECK.

Пример программы, суммирующей денежные значения:

$ RUN ADD_SUMS.EXE $ DECK $ 13,53 $ 3,33 $ 2,33 $ EOD

Произойдет следующий вывод (предполагается, что ADD_SUMS был написан для чтения значений и их сложения):

$ 19,19

Пример использования DECK / DOLLARS для создания одного командного файла из другого:

$ COPY SYS $ INPUT SYS $ SCRATCH: TEMP.COM $ DECK / DOLLARS = $$$$ $ TYPE SYS $ INPUT Это пример использования DECK для создания командного файла из командного файла $$$$ $! другие команды следуют...

YAML

YAML в первую очередь полагается на отступы пробелов для структуры, что делает его устойчивым к столкновению разделителей и способно представлять многострочные строки со свернутыми строковыми литералами:

--- caption: «Пример функциональности в стиле heredoc с использованием YAML» дата: «2007-06-01» пример:>HTML переходит в YAML без сообщения об изменении: | 

«Три всегда больше двух, даже для больших значений двух»

- Автор неизвестен

См. Также

Ссылки

Общие

Внешние ссылки

Последняя правка сделана 2021-05-23 09:58:03
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru