我有两个这样的属性:
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" )
答案 0 :(得分:1)
除了如何在Chef模板中使用Erb模板语法之外,还不确定您的问题。 Erb有两个主要指令,<% %>
用于非打印控制代码,<%= %>
用于将表达式值打印到输出。您可以通过@name
访问您传入的变量(例如@bash_array1
)。编写一些生成所需输出的Ruby代码。