Hallo zusammen,
erstmal Danke an euch alle. Lange schon bin ich schweigender Mitleser und bei allen Fragen konnte ich mir hier Rat holen. Nun habe ich aber ein Problem auf dass ich noch keine Antwort gefunden habe. Darum habe ich mich heute nach gefühlten 10 Jahren bei euch regesitrert.
Ich hab ein bash geschrieben was aus zwei Dateien Infos holt und sie mir gemeinsam in einer Zeile anzeigt. Soweit auch kein Problem. Nur beim Anzeigen verhält sich das Script komisch. Getestet wurde es auf verschiedenen Systemen (Ubuntu,OpenSuse,Debian jeweils ver.Versionen)
Das hier ist mein Script. Alle Variable werden sauber ausgegeben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/bash echo "An folgenden Ports hängen folgende Endgeräte:" while read line do port=`grep $line mac_log | cut -c 38-500` port=${port// /} ip=`grep $line csv | cut -c 16-30` ip=${ip//,/} ip=${ip// /} name=`grep $line csv | cut -c 30-500` name=${name//,/} name=${name// /} echo $ip echo $port echo $name done < new |
Die Ausgabe sieht wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | root@testsystem:/home/scripts# ./test.sh An folgenden Ports hängen folgende Endgeräte: CPU CPU CPU CPU 192.168.178.31 Fa0/1 TRB 192.168.178.37 Fa0/2 Debian Gi0/2 192.168.178.38 Fa0/3 Bundesliga |
Ändere ich jedoch nun die Ausgabe der Variable $port (echo "$port tt) passt es irgendwie nicht mehr.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | root@testsystem:/home/scripts# ./test.sh An folgenden Ports hängen folgende Endgeräte: tt tt tt tt 192.168.178.31 tt/1 TRB 192.168.178.37 tt/2 Debian tt/2 192.168.178.38 tt/3 Bundesliga |
Wie ihr seht wird die Variable manipoliert. Ich weiß nur nicht warum. Was ich jedoch rausgefunden habe dass wenn ich nur " t" nach der Variablen im Echo einfüge werden nur 2 Zeichen verändert und nicht wie in diesem Beispiel 3 Zeichen.
Ändere ich das Echo abermal in echo "Das ist ein Test mit $port" Wird die Variable richtig angezeigt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | root@testsystem:/home/scripts# ./test.sh An folgenden Ports hängen folgende Endgeräte: Das ist ein Test mit CPU Das ist ein Test mit CPU Das ist ein Test mit CPU Das ist ein Test mit CPU 192.168.178.31 Das ist ein Test mit Fa0/1 TRB 192.168.178.37 Das ist ein Test mit Fa0/2 Debian Das ist ein Test mit Gi0/2 192.168.178.38 Das ist ein Test mit Fa0/3 Bundesliga |
Ich habe schon alle möglichen Varianten des echo's durch. echo "$port tt"; echo "$port" tt; echo $port "tt"; echo $port tt; Aber leider funktioniert nichts - ich stehe gerade echt auf dem Schlau.
Über eure Hilfe würde ich mich freuen
aramis