ich bräuchte mal wieder Hilfe von den Script-Gurus unter euch
./test.sh
Code: Alles auswählen
#!/bin/bash
while read -r actualhost; do
[[ ! ${actualhost// } || $actualhost = \#* ]] && continue;
ruid=${actualhost%@*}
rhn=$(printf $actualhost | awk -F'[@:]' '{print $2}')
rprt=${actualhost##*:}
echo Original line was=$actualhost, I generated username=$ruid, hostname=$rhn and port number=$rprt
done < "./test.list"
Code: Alles auswählen
foobar
john@doe
fire:911
max@pain:234
Original line was=foobar, I generated username=foobar, hostname= and port number=foobar
Original line was=john@doe, I generated username=john, hostname=doe and port number=john@doe
Original line was=fire:911, I generated username=fire:911, hostname=911 and port number=911
Original line was=max@pain:234, I generated username=max, hostname=pain and port number=234
Wie man sieht schlägt das fehl, weil in den Beispiel der test.list in Zeile 2+3 kein Doppelpunkt, bzw. kein @-Zeichen vorkommt. Dann kommt das Skript durcheinander und spuckt diesen Output aus.
Wie mache ich das, damit es wie gewollt funktioniert? Und ich möchte, dass außerdem die Variablen ruid und rprt automatisch den default-Wert "root" bzw. "22" erhalten, falls nicht anders in der Datei "test.list" angegeben und ausgelesen.
Mein gewünschter Output wäre also:
Original line was=foobar, I generated username=root, hostname=foobar and port number=22
Original line was=john@doe, I generated username=john, hostname=doe and port number=22
Original line was=fire:911, I generated username=root, hostname=fire and port number=911
Original line was=max@pain:234, I generated username=max, hostname=pain and port number=234
Hoffe auf eure Hilfestellung. Danke und Grüße,
Pangu.