我正在编写一个非常基本的方法,将数据从一个文件夹复制到另一个文件夹。我写了以下代码:
执行" 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;
] 1
答案 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