rklm schrieb:
...
Sonst würde ich das mit sed so machen:
| ...
sid=$(echo "$input" | sed -n 's#.*-sid \([^ ]*\).*#\1#p')
...
|
mike1963 schrieb:
Würde ich spontan so machen:
...
SID=$( echo $ERG | sed -e "s/.* -sid //g" | sed -e s"/ .*//g" )
...
Ich würde hier "$ERG" ordentlich quoten. Außerdem brauchst Du keine zwei sed-Befehle. Das geht auch mit einem.
Zuerstmal mal Danke für Deine fachkundigen Hinweise. 👍
Ob beim sed aber tatsächlich der eine Befehl besser ist ... da bin ich mir ehrlich nicht ganz sicher. Aus dem einfachen Grund, weil ich (und viele andere) sicher nicht die Erfahrung bzw. das Wissen bzgl. der bash haben, welches Du hast. Und wenn ich in einem Jahr wieder mal in ein script reinschauen muss bzw. ändern muss, dann weiss zumindest ich bei der Befehlsfolge:
echo $ERG | sed -e "s/.* -sid //g" | sed -e s"/ .*//g"
binnen 3 Sekunden, was das tut, während ich beim Statement
echo "$input" | sed -n 's#.*-id \([^ ]*\).*#\1#p'
doch zweimal genauer hinschauen muss, um zu erkennen, was der sed da macht.
Natürlich ist Deine sed-Lösung mit nur einem Aufruf die deutlich "elegantere" und schnellere, und daher eigentlich zu bevorzugen - ich für mich (!) würde aber meinen, dass mir meine dennoch besser gefällt, da ich mit meinem begrenzten Wissen bei meinen beiden sed-Aufrufen deutlich schneller erkenne, was passiert.
Ist wohl auch ein bisschen Geschmackssache ☺
Bringt mich aber zu einem interessanten Thema: Wie schreibt man robuste, wartbare und möglichst systemneutrale Bash-Scripte, welche "ungeschriebenen Gesetze" sollte man beim Schreiben von bash-Skripten befolgen?
Das Thema interessiert mich wirklich - dazu werde ich bei Gelegenheit noch einen Thread eröffnen. 😉