我在ruby脚本的开头声明了将wordpress安装到数组中需要完成的步骤
$wordpress_cmds = [ "mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html",
"cp -R #{$wordpress_current}/* #{$web_root}#{$web_directory}#{$web_url}/public_html",
"chown -R www-data:www-data #{$web_root}#{$web_directory}#{$web_url}",
]
稍后会更新一些变量。是否有任何方法可以在访问数组时获得数组中所有变量的最新值?
假设我的代码是这样的我总是得到数组的初始值而不是我想要的(里面有更新的变量)
$web_root = '====='
$wordpress_cmds = ["#{$web_root}"]
puts $wordpress_cmds[0]
$web_root= "new value"
puts $wordpress_cmds[0]
$web_root.replace("new value")
puts $wordpress_cmds[0]
不能,字符串插补是一次性操作。它通过替换值来修改字符串,就是这样。但是,只要稍微修改一下代码,就可以这样做:
$web_root = '====='
$wordpress_cmds = [lambda{"mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html"}]
puts $wordpress_cmds[0].call
$web_root= "new value"
puts $wordpress_cmds[0].call
$web_root.replace("new value")
puts $wordpress_cmds[0].call
输出:=====
new value
new value
这里你把一个函数放入数组中,而不是字符串。该函数将返回变量的实际值。因此,您必须使用$wordpress_cmds[0].call
而不是$wordpress_cmds[0]
来实际调用它