Login
Newsletter
Werbung

Thema: Shell-Skripte – Kleine Helfer selbst gemacht

12 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von tntnet am Do, 20. Februar 2014 um 16:02 #

ein Prozess weniger wird gestartet wenn man das grep im awk erledigt. Also statt

grep Location | awk '{print $2}'

kürzer:

awk '/Location/{print $2}'

Oder noch besser:

awk '$1 == "Location:" {print $2}'

[
| Versenden | Drucken ]
0
Von Tendenz Rot am Fr, 21. Februar 2014 um 23:22 #

Was ist nur aus dem guten alten Shell-Scripting geworden? Für diesen Trivialfall ist es mglw. nicht so von Bedeutung, aber spätestens wenn solche Pipe-Orgien in Funktionen landen, welche dann möglichst auch noch in Schleifen aufgerufen werden, dann ist Trauer angesagt. Schade das das Potential der Shell ständig unterschätzt wird. Hier mal eine Version komplett ohne grep und awk. (Funktioniert auch mit der busybox sh)


#!/bin/sh
set -- $(wget --max-redirect=0 -S -qO- "$@" -O /dev/null 2>&1)
while [[ $1 != "" ]]; do
if [[ $1 = "Location:" ]]; then echo $2; break; fi
shift
done

Ist ein wenig mehr Schreibkram, aber um Längen schneller da das Suchen und Starten zusätzlicher Prozesse entfällt.

[
| Versenden | Drucken ]
  • 0
    Von hjb am Sa, 22. Februar 2014 um 09:48 #

    Guter Einwand! Allerdings ist zu vermuten, dass der Autor nur gelegentlich etwas Shell verwendet und daher nicht auf diesen Code kommen konnte.

    Ich muss auch gestehen, dass mir trotz umfangreicher Shell-Programmierung die Konstrukte "set --" und "[[ ... ]]" nicht geläufig waren. Wieder was gelernt!

    [
    | Versenden | Drucken ]
    0
    Von 10 Jahre Basherfahrung am Sa, 22. Februar 2014 um 11:16 #

    Äh und warum funktioniert das?
    Wieder so ein echtes Bash-Wunder,
    "set --" -> vorher noch nie gesehen.

    [
    | Versenden | Drucken ]
    • 0
      Von 10 Jahre Basherfahrung am Sa, 22. Februar 2014 um 11:22 #

      help set
      -- Assign any remaining arguments to the positional parameters. If there are no remaining arguments, the positional parameters are unset.

      Ist irgendwie genauso übel wie
      while....
      do
      done < ....

      Wobei diese obskuren Lösungen in bash immer zu den schnellsten gehören. In einem bash Buch (iirc vom apress Verlag) werden zig Varianten durchexerziert die Lösung mit dem < auf ein while/for war da iirc einer der schnellsten Lösungen.

      [
      | Versenden | Drucken ]
    0
    Von Penguin No. 42 am Sa, 22. Februar 2014 um 15:09 #

    Ist ein wenig mehr Schreibkram, aber um Längen schneller da das Suchen und Starten zusätzlicher Prozesse entfällt.

    Mag sein, das es um Längen schneller ist, aber mit dem "mehr an Schreibkram" hast du den Geschwindigkeitsvorteil deines Skripts, schon mehrfach ad absurdum geführt.

    [
    | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung