2014-04-04 23 views
0

我想在廚師的數組上運行一個循環(循環包含一個bash命令)。任何人都有這個想法嗎?不能讓bash在廚師中循環

symlink_db = data_bag_item(「my」_db,」my」_db) 
source = symlink_db[「sourceFile」] 
instances = symlink_db["Instances"].split(',') <---Instances is a comma separated string in Databag 

bash "create_link" do 
    puts "1: #{instances}"  <-------Puts all instances correctly 
    instances.each do |instance| 
     puts "2: #{instance}" <------ This prints each instance in loop correctly 

     code <<-EOH   
      echo "ln -fs #{source} #{instance}"; <----- This is printed only for last instance in the loop 
     EOH 
     end 
end 

感激,如果任何人都可以很快幫助.....感謝

回答

5

你需要你的內循環bash的資源:

instances.each do |instance| 
    bash "create_link-#{instance}" do 
    code <<-EOH 
     echo "ln -fs #{source} #{instance}" 
    EOH 
    end 
end 

順便說一句,這不是地道的廚師。您只需要使用link資源這樣的:

instances.each do |instance| 
    link instance do 
    to source 
    end 
end 

這種方法的優點是,它使你的食譜跨平臺的。它也更具可讀性。