2016-10-02 2 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 

В моем Баше скрипте мне нужно иметь два массива, которые будут иметь каждый, значение два массива выше, как этот

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

Что самый простой способ сделать это?

Спасибо,

Габриэлю

EDIT: Файл 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 

Конечный результат в моей ш должен быть

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

ответ

1

Не уверен, что вы просите за рамки просто, как использовать синтаксис шаблона ERB в шаблоне Chef. Erb имеет две основные директивы: <% %> для непечатаемого управляющего кода и <%= %> для печати значений выражений на выходе. Вы можете получить доступ к переменным, которые вы проходите через @name (например, @bash_array1). Напишите некоторый код Ruby, который генерирует требуемый результат.

+0

Благодарим вас за то, что нашли время, чтобы прочитать мою проблему. В самом деле, моя проблема заключается в том, что я мало что знаю о рубине, и если бы я был неясно об этом, я извиняюсь. Мне нужно знать, как получить атрибут массива в массив bash. Еще раз спасибо. – gbaii

+1

Не так, как вы это делаете, вам нужно написать код. Используйте основные строительные блоки, о которых я упоминал, с тем, что вы можете выписать любой желаемый формат. – coderanger

Смежные вопросы