В чем разница между << вариантами в Vagrant heredo c? - PullRequest
0 голосов
/ 19 марта 2020

Я видел эти примеры для Heredocs в Vagrantfile s:

$myscript1 = <<SCRIPT
    echo "test <<"
SCRIPT

$myscript2 = <<-SCRIPT
    echo "test <<-"
SCRIPT

$myscript3 = <<~SCRIPT
    echo "test <<~"
SCRIPT

Может кто-нибудь объяснить примерами, в чем разница между этими вариантами?

Есть ли еще варианты для встроенный Heredocs?

1 Ответ

0 голосов
/ 20 марта 2020

Из документации heredo c , указанной в комментариях:

Если вы пишете большой блок текста, вы можете использовать «здесь документ» или « heredoc ”:

expected_result = <<HEREDOC
This would contain specially formatted text.

That might span many lines
HEREDOC

heredo c начинается со строки, следующей за <<HEREDOC, и заканчивается следующей строкой, начинающейся с HEREDOC. Результат включает в себя завершающий символ новой строки.

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

Вы можете сделать отступ для конечного идентификатора, если поместите «-» после <<: </p>

  expected_result = <<-INDENTED_HEREDOC
This would contain specially formatted text.

That might span many lines
  INDENTED_HEREDOC

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

Чтобы иметь содержимое с отступом и закрывающий идентификатор с отступом, вы можете использовать «волнистое» наследство c, которое вместо этого использует «~» «-» после <<: </p>

  expected_result = <<~SQUIGGLY_HEREDOC
    This would contain specially formatted text.

    That might span many lines
  SQUIGGLY_HEREDOC

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

...