2016-03-22 9 views
0

Ich habe das in Koch folgenden ausführen:Referenzierung ein Attributs in einer Windows-Pfadzeichenfolge

#execute 
execute 'service-api install' do 
    command 'c:\buildinfo\service-api\api\approot\web-#{node['default']['env']}.cmd' 
end 

sein Lauf in Fenstern und # {node [ 'default'] [ 'env']} ein Attribut ist, dass ich Ich versuche, in der Pfadzeichenfolge oben zu verweisen.

Als ich dies laufe ich die folgende Fehlermeldung erhalten:

> SyntaxError 
> ==> default: ----------- 
> ==> default: C:\vagrant-chef\319622f1791bb50a8f9441fd4c1ff806\cookbooks\djcm_paypal_win\recipes\installService.rb:76: 
> syntax error, unexpected tIDENTIFIER, expecting keyword_end 
> ==> default: ...api\approot\web-#{node['default']['env']}.cmd' 

Wenn ich versuche:

#execute 
    execute 'service-api install' do 
     command "c:\buildinfo\service-api\api\approot\web-#{node['default']['env']}.cmd" 
    end 

Die Schrägstriche in einer anderen Farbe angezeigt wird (Charakter entkommen?) Und ich bekomme die folgenden Fehler :

[execute] The filename, directory name, or volume label syntax is incorrect. 
command "c:\buildinfo ervice-api\api\approotweb-integration.cmd" 

So verwirft es um Schrägstriche, aber bekommt das Attribut. Wie kann ich ein Attribut in einer Zeichenfolge mit Schrägstrichen versehen?

edit 1: Ich versuchte beide Doppelschlitze und die andere Lösung, obwohl es jetzt versucht, den richtigen Pfad zu finden, aber immer noch einen Fehler gibt, obwohl die Datei an dieser genauen Stelle vorhanden ist, und ich kann es manuell ausführen. Irgendwelche Ideen ?

der Fehler jetzt:

* execute[service-api install] action run 
==> default:  [execute] The system cannot find the path specified. 
==> default:  
==> default: 
==> default:  ================================================================================ 
==> default:  Error executing action `run` on resource 'execute[service-api install]' 
==> default:  ================================================================================ 
==> default:  
==> default:  Mixlib::ShellOut::ShellCommandFailed 
==> default:  ------------------------------------ 
==> default:  Expected process to exit with [0], but received '1' 
==> default:  ---- Begin output of c:\buildinfo\service-api\api\approot\web-integration.cmd ---- 
==> default:  STDOUT: 
==> default:  STDERR: The system cannot find the path specified. 
==> default:  ---- End output of c:\buildinfo\service-api\api\approot\web-integration.cmd ---- 
==> default:  Ran c:\buildinfo\service-api\api\approot\web-integration.cmd returned 1 
+2

Versuchen doppelte Schrägstriche 'c mit: \\ build \\ Service-api ...' und so weiter. – vee

+0

@vee - check edit bitte – Scooby

Antwort

2

Einfachen Anführungsstriche nicht Interpolation ermöglichen. Durch doppelte Anführungszeichen erhalten die umgekehrten Schrägstriche eine spezielle Bedeutung, also \b means "backspace".

können Sie Kompromiss der % Operator Inhalt printf -Stil hinzuzufügen:

command('c:\buildinfo\service-api\api\approot\web-%s.cmd' % node['default']['env']) 
+0

check edit bitte – Scooby

+0

ja, die Datei existiert.Wenn ich den Pfad im System selbst ausführen, funktioniert es. :/ – Scooby

+0

Führt etwas wie 'command' es nicht auf dem Remote-Rechner aus? – tadman

Verwandte Themen