2011-12-31 34 views
0

我宣佈,需要以一個數組在我的Ruby腳本我可以'刷新'一個變量的值嗎?

$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}", 
       ] 

有些變量是以後更新的開始安裝WordPress做的步驟。有什麼辦法在訪問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] 

回答

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]才能真正調用它。

+0

如何更改我的代碼,如果我有更多的「複雜」字符串? ''mkdir -p#{$ web_root}#{$ web_directory}#{$ web_url}/public_html「, ' – Radek 2011-12-31 04:03:41

+0

已更新的答案。 – 2011-12-31 04:05:58

+0

太好了。謝謝。特別是對於解釋。工作順利。 – Radek 2011-12-31 04:07:20

相關問題