什么“<< - ”在Ruby中意味着什么?

时间:2012-05-12 04:52:11

标签: ruby

例如:

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

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

4 个答案:

答案 0 :(得分:37)

这叫做heredoc。一种简单的方法来定义多行字符串,可以包括单引号或双引号,而无需转义它们。

例如,请参阅更多here

通常使用heredocs来定义大块代码。 Some编辑了解这一点,并可以在那里突出显示语法(如果您指定语言)。看:

strings vs heredocs

答案 1 :(得分:2)

对我来说就像是heredoc。 -允许结束分隔符忽略它之前的空格。

简单的Google搜索给了我this

答案 2 :(得分:2)

对于Ruby <<~END,还有一个更新的HEREDOC语法更接近于您在大多数shell和其他语言中通常使用~而不是-来表示Ruby的语法剥离前导空格以匹配块中最小的缩进行。

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

答案 3 :(得分:-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
相关问题