2012-05-12 192 views
26

例如:Ruby中的「<< - 」是什麼意思?

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

這是什麼代碼呢? <<-叫什麼?

+5

Symbolhound是搜索谷歌無法處理的語法的一種方法。 –

回答

34

它被稱爲heredoc。一種簡單的方法來定義多行字符串,其中可能包含單引號或雙引號,而無需轉義它們。例如,

查看更多here

通常你會使用heredocs來定義大塊的代碼。 Some編輯知道這一點,並可以突出顯示你的語法(如果你指定語言)。看:

strings vs heredocs

+0

我喜歡語法突出和今天學習,也是第一次。 –

2

在我看來像heredoc。 -允許結尾分隔符忽略它之前的空格。

一個簡單的Google搜索給了我this

+1

Heredocs *會對谷歌造成痛苦。如果你以前從未遇到過它,這個概念和實現都很奇怪。 –

+0

我從來沒有聽說過heredoc所以谷歌沒有結果。有時很難把名字放到未知的符號中 – fontno

+0

bash/shell中的'<< - END'會去掉前面的空格,但是在Ruby中並不那麼簡單,請參閱2.3.x中的更改,在需要一個新的語法的同時還有一些特性奇偶性 – dragon788

0

可以在廚師食譜在一個塊傳遞多個命令,這樣

bash 'Install ftppwd' do 
    code <<-EOH 
    mkdir #{ftppwd_dir} 
    chmod 775 #{ftppwd_dir} 
    chgrp #{batch_id} #{ftppwd_dir}/* 
    chown #{batch_id} #{ftppwd_dir}/* 
    EOH