从数组属性到bash数组

时间:2016-10-02 07:37:19

标签: arrays bash chef

我有两个这样的属性:

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 个答案:

答案 0 :(得分:1)

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