2016-10-02 59 views
0

我有兩個屬性,像這樣的:從陣列屬性來砸陣列

default['cookbook']['array1'] = [ "a", "b", "c", "d" ] 
default['cookbook']['array2'] = [ "x", "y", "z", "w" ] 

我需要這些屬性變量傳遞給這樣的一個模板:

template "/tmp/some.sh" do 
    source "some.sh.erb" 
    owner 'root' 
    group 'root' 
    mode "0755" 
    variables(
     :bash_array1 => node['cookbook']['array1'], 
     :bash_array2 => node['cookbook']['array2'] 
) 
end 

在我的bash腳本,我需要有兩個數組,每個數組都有上面兩個數組的值,像這樣

#!/bin/bash 
inputs1=("a" "b" "c" "d") 
inputs2=("x" "y" "z" "w") 

什麼是最簡單的方法 去做吧?

謝謝

加布裏埃爾

編輯: 什麼我已經試過直到現在sh.erb文件看起來是這樣的:

####### the original sh file ######### 
#inputs1=("a" "b" "c" "d") #this is the original sh file 
#inputs2=(""x" "y" "z" "w") 
####### end of the original sh file ######### 

我已經試過:

inputs1=<%= @bash_array1 %> 
inputs2=<%= @bash_array2 %> 

和結果:

inputs1=[ "a", "b", "c", "d" ] #which cannot be used 
inputs2=[ "x", "y", "z", "w" ] #which cannot be used 

最終的結果在我的sh應該是

inputs1=("a" "b" "c" "d") 
inputs2=("x" "y" "z" "w") 

回答

1

不知道你所要求的不僅僅是如何廚師模板中使用Erb的模板語法。 Erb有兩個主要指令,<% %>用於非打印控制代碼,<%= %>用於將表達式值打印到輸出。您可以通過@name訪問您通過的變量(例如@bash_array1)。編寫一些生成你想要的輸出的Ruby代碼。

+0

感謝您花時間閱讀我的問題。事實上,我的問題是,我幾乎不知道紅寶石,如果我不清楚,我很抱歉。我需要的是知道如何從數組屬性到bash數組。再次感謝。 – gbaii

+1

有沒有一種特定的方式,你需要編寫一些代碼。使用我提到的基本構建塊,您可以寫出任何您想要的格式。 – coderanger