厨师在执行资源中抛出错误

时间:2014-12-04 09:49:13

标签: chef

我正在编写一个非常基本的方法,将数据从一个文件夹复制到另一个文件夹。我写了以下代码:

  

执行" file_sharing"做

     

命令"复制" X:\ B2BPortal-0.0.1-SNAPSHOT.war" " C:\ Apache的Tomcat的6.0.32 \ Apache的Tomcat的6.0.32 \ web应用&#34 ;; / Y;"

     

当我转到我的节点并尝试执行此命令时,它运行得很好。但是,如果我尝试通过厨师运行这个食谱,它会抛出错误。附上错误的屏幕截图。请看一下并提出解决方案。![错误



command "copy "X:\B2BPortal-0.0.1-SNAPSHOT.wa...
                ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: no .<digit> floating literal anymore; put 0 before dot
...ommand "copy "X:\B2BPortal-0.0.1-SNAPSHOT.war" "C:\apache-to...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: syntax error, unexpected tINTEGER
...mmand "copy "X:\B2BPortal-0.0.1-SNAPSHOT.war" "C:\apache-tom...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: syntax error, unexpected tSTRING_BEG, expecting keyword_end
...:\B2BPortal-0.0.1-SNAPSHOT.war" "C:\apache-tomcat-6.0.32\apa...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: syntax error, unexpected tCONSTANT, expecting keyword_end
...2BPortal-0.0.1-SNAPSHOT.war" "C:\apache-tomcat-6.0.32\apache...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: no .<digit> floating literal anymore; put 0 before dot
...HOT.war" "C:\apache-tomcat-6.0.32\apache-tomcat-6.0.32\webap...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: syntax error, unexpected tINTEGER
...T.war" "C:\apache-tomcat-6.0.32\apache-tomcat-6.0.32\webapps...
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: no .<digit> floating literal anymore; put 0 before dot
...omcat-6.0.32\apache-tomcat-6.0.32\webapps"; /Y;"
...                               ^
c:/chef/cache/cookbooks/file_sharing/recipes/default.rb:11: syntax error, unexpected tINTEGER
...cat-6.0.32\apache-tomcat-6.0.32\webapps"; /Y;"
&#13;
&#13;
&#13;

] 1

2 个答案:

答案 0 :(得分:1)

在Ruby中,\(反斜杠)用于字符串转义序列,如\n\t。您可以使用\\或单引号',因为它们不会处理反斜杠转义。

答案 1 :(得分:0)

您必须转义双引号和命令字符串中的反斜杠,或者将其换成单引号。由于你没有在那里进行任何变量插值,我建议使用后者。

试试这个:

execute "file_sharing" do
  command 'copy "X:\B2BPortal-0.0.1-SNAPSHOT.war" "C:\apache-tomcat-6.0.32\apache-tomcat-6.0.32\webapps" /Y;'
end