0

我声明了需要完成的步骤,以便在我的 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}",
                 ]

稍后会更新一些变量。有没有办法在访问 arrya 时获取数组中所有变量的最新值?

假设我的代码就像我总是得到数组的初始值而不是我想要的(里面​​有更新的变量)

$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]
4

1 回答 1

2

不,字符串插值是一次性操作。它通过替换值来修改字符串,就是这样。但是,通过稍微修改的代码,您可以这样做:

$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]实际调用它。

于 2011-12-31T03:59:24.567 回答