2016-04-09 15 views
1

Ich versuche, in die Datei Werte einzufügen, die ich von einer anderen Datei (xml) bekomme und ich möchte, dass sie in einer Zeile stehen. Ich überprüfte Variablen - getrennt sind sie, aber wenn ich versuche, sie irgendwie zu verketten, geht etwas schief und ich bekomme nur Teile der vorherigen Zeichenfolgen.Bash - verschwindende Werte beim Verketten von Strings

Mein Code sieht wie folgt:

echo $usd 
echo $gbp 
all=$usd$space$gbp 
echo $all 

Die Ausgabe sieht wie folgt aus:

3,6525 
5,5407 
5,5407 

Weiß jemand, was mache ich falsch? Oder was kann ich tun, um meine Daten wiederherzustellen?

+0

Die Verkettung sieht in Ordnung. Es muss ein Problem mit Ihren Daten sein. Sie sollten mehr Code zeigen. –

+1

Ihre Daten enthalten Wagenrücklaufzeichen '\ r' - überprüfen Sie mit' echo "$ usd" | od -c - führe 'dos2unix' in deinen Eingabedateien aus. –

Antwort

2

Sie haben eine CR in Ihrer Variablen. Ich kann Ihren Fall mit dem Vars

usd="3,6525^M" 
gbp="5,5407^M" 
space=" " 

reproduzieren (I eingegeben^M in vi mit STRG + V STRG + M, es ist die \ r Zeichen) Wenn Sie nicht wollen, die xml reinigen, usd und gbp, können Sie verwenden

all=${usd%$'\r'}${space}${gbp%$'\r'}