34

例如:

code = <<-EOH
    bundle install
    bundle exec unicorn -c /etc/unicorn.cfg -D
EOH

这段代码有什么作用?什么<<-叫做?

4

4 回答 4

43

它被称为heredoc。一种定义多行字符串的简单方法,其中可能包含单引号或双引号,而无需转义它们。

例如,在这里查看更多信息。

您经常使用 heredocs 来定义大块代码。一些编辑知道这一点,可以在那里为您突出显示语法(如果您指定语言)。看:

字符串 vs heredocs

于 2012-05-12T04:56:22.037 回答
3

在我看来像heredoc。-允许结束分隔符忽略它之前的空格。

一个简单的谷歌搜索给了我这个

于 2012-05-12T04:55:33.570 回答
3

Ruby 还有一个更新的 HEREDOC 语法,<<~END它更类似于您通常在大多数 shell 和其他语言中看到的语法,~而不是-告诉 Ruby 去除前导空格以匹配块中缩进最少的行。

https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc

于 2018-02-28T20:33:49.333 回答
-1

您可以在 Chef Recipe 中像这样在一个块中传递多个命令

   bash 'Install ftppwd' do
    code <<-EOH
   mkdir #{ftppwd_dir}
   chmod 775 #{ftppwd_dir}
   chgrp #{batch_id} #{ftppwd_dir}/*
   chown #{batch_id} #{ftppwd_dir}/*
   EOH
于 2017-12-13T18:26:57.567 回答