例如:
code = <<-EOH
bundle install
bundle exec unicorn -c /etc/unicorn.cfg -D
EOH
这段代码有什么作用?什么是<<-
?
答案 0 :(得分:37)
这叫做heredoc。一种简单的方法来定义多行字符串,可以包括单引号或双引号,而无需转义它们。
例如,请参阅更多here。
通常使用heredocs来定义大块代码。 Some编辑了解这一点,并可以在那里突出显示语法(如果您指定语言)。看:
答案 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