arrays - Chef 使用数组中的变量

标签 arrays ruby linux chef-infra chef-recipe

如何在 Chef 中使用数组中的变量。我正在尝试使用数组创建多个文件夹。但是我的代码不起作用:

代码

variable1 = "/var/lib/temp"
variable2 = "/opt/chef/library"

%w{ #{variable1} #{variable2} }.each do |dir| 
    directory dir do
       owner 'root'
       group 'root'
       mode  '755'
       recursive true
       action :create
    end
end 

最佳答案

%w{ ... } 语法用于声明单词数组,并且不进行插值。由于您想要一个预先存在的字符串数组,因此可以通过声明一个普通的旧数组来实现:

[ variable1, variable2 ].each do |dir|
  # ...
end

或者您可以切换到此:

%w[ /var/lib/temp /opt/chef/library ].each |dir|
  # ...
end

第二种形式更有意义,因为这是您的意图。不需要中间变量。

关于arrays - Chef 使用数组中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124825/

相关文章:

MySQL datamapper 适配器正在链接查询而不是连接

javascript - 检查今天是否在日期数组中

ruby-on-rails - Rails 寻找错误的方法

ruby-on-rails - ActiveRecord 子类化?

mysql - 从数据库sql文件恢复单个mysql表

java - 错误 : JAVA_HOME is set to an invalid directory:/usr/lib/jvm/java-8-oracle/jre/bin/java when i run gradle command in terminal

python - 如何在使用 Python 3 和 asyncio 实时写入文件时读取文件,例如 "tail -f"

arrays - reshape 和重新排列数组

C - 将数组传递给函数并在函数内部重新分配

java - 如何将数字转换为字节,类似于 postgres 中的 java