2016-07-20 6 views
0

Ich versuche, Benutzer-ID und Passwort von der Kommandozeile wie untenJava System.getProperty liefert falsche Zeichenfolge in Fall Wert hat Sonderzeichen

mvn clean verify -Dtest.email="[email protected]" -Dtest.password="pass$word$" 

Zugriff auf diese im Programm

System.out.println(System.getProperty("test.email")); 
System.out.println(System.getProperty("test.password")); 

wieder passieren

[email protected] 
pass 

Kann jemand klären, warum Zeichenfolge mit $ -Zeichen abgeschnitten wird und umherarbeiten dafür?

Antwort

0

Sie sollten das Dollarzeichen wie unten zitieren:

mvn clean verify -Dtest.email="[email protected]" -Dtest.password="pass\$word\$" 

Sonst wirst du leere Zeichenkette erhalten, da kein Wert auf das „Wort“ Variable zugeordnet ist.

+0

können Sie bitte klären, warum getProperty nicht alles zwischen Anführungszeichen zurückgibt? Ich habe die Methodendokumentation gelesen, aber nicht über Sonderzeichen und flüchtige Bedürfnisse herausgefunden. Auch nur um zu verdeutlichen "Wort" ist nicht variabel, aber der Passwort-Wert selbst enthält Sonderzeichen $ – vikramvi

+1

@vikramvi Aus dem Verhalten Ihres Programms nahm ich an, dass Sie UNIX-System laufen. Das '$' Zeichen ist ein variables Symbol, und da Sie keine Variable namens 'word' gesetzt haben, erhält es den Standardwert einer leeren Zeichenkette. – Maroun

+0

Danke zur Klärung. Ich verwende Mac-Befehlszeile, um 2 Argumente an Java-Programm zu übergeben, da ich Benutzer-ID & pwd nicht hart codieren kann. – vikramvi

Verwandte Themen