• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] echo schneidet teil vom string ab

endor

Member
Code:
for line in `cat xyz`
do
        if echo $line|grep "name" 1> /dev/null
        then
                TEST=`echo $line|cut -d ':' -f 2`
                echo "Sichere $TEST jetzt"
        fi
done

so sieht mein script aus.. also immer wenn in einer zeile name vorkommt soll er den name herausschneiden und dann "Sichere $TEST jetzt" ausgeben.. $TEST entspricht dann dem Namen.

Was dabei allerdings herauskommt ist:
Code:
 jetzte Frank
Code:
 jetzte Michael

Wie kommt das, dass da ein Teil vom String weggeschnitten wird? Ist irgendwas bei der Setzung der TEST Variablen nicht korrekt? Oder hat das was mit dem " beim echo zu tun?
 

sc_m

Member
Die Datei "xyz" hat vermutlich DOS-Zeilenenden ("\r\n") statt Unix-Zeilenenden (nur "\n"). Verwende einmal dos2unix, dann hat sich das erledigt.
 
Mit "for line in `cat xyz`" erhältst du nicht jede Zeile, sondern jedes Wort. Wo getrennt wird, bzw. was ein Wort ausmacht, steht in $IFS.
 

sc_m

Member
Ich schätze, Leerzeichen sind nicht das Problem. Eine einzelne Zeile der Datei scheint doch etwa so auszusehen:
Code:
name:Frank\r\n
Deshalb landet "Frank\r" in der Variable TEST, und bei der Ausgabe wird am Ende von Frank der Cursor an den Zeilenanfang zurückgeschoben.
 
Oben