Shell-Scripting: doppelte Pipe-Symbole?



  • Nachfolgend ein Ausschnitt aus einem Confixx-Script zum Erzeugen von Mail-Aliases, das ich mal ein wenig umschreiben möchte. Allerdings habe ich noch nicht verstanden, was mit den doppelten Pipe-Symbolen bewirkt wird. Das ist doch kein ODER, oder? 😉

    for i in $(cat /etc/aliases | grep confixx-du | cut -d: -f 1) ; do
            final="$i:\t"
            for j in $(cat /etc/aliases | grep $i | cut -d: -f 2 | tr -d "," | sed 's/^[ \t]*//' | sed 's/ /#/') ; do
                    temp=$(echo $j | sed 's/#/ /')
                    echo $j | grep -q autoresponder [b]||[/b] temp=$(echo $j | grep @ [b]||[/b] echo $j@$(cat /etc/exim4/confixx/confixx-aliases | grep confixx-du-1 | cut -d@ -f 3))
                    final="$final $temp,"
            done
            echo -e "$final" | sed 's/[,]$//' >> /etc/exim4/confixx/confixx-verteiler
    done
    


  • Jansen schrieb:

    Das ist doch kein ODER, oder? 😉

    aber da wäre doch ein oder sinnvoll, gell?



  • Angenommen es wäre ein ODER, wo/wie entscheidet sich, welche Variante letztendlich zum Zug kommt?

    Umschreiben will ich das Script übrigens, weil es, so wie es da steht, Müll produziert. Deshalb bin ich von der Sinnhaftigkeit der einzelnen Abschnitte nicht vollkommen überzeugt. 😉



  • Bei einem || werden die Befehle von links nach rechts ausgeführt, bis ein Befehl einen Exit-Status von 0 (also ok) zurückgibt. Man kann also sowas wie verschiedene versuche etwas zu finden machen.



  • Danke! Das macht Sinn. 🙂


Anmelden zum Antworten