Bash Frage

  • ich möchte aus dem Mail Queue bestimmte Mails mit bestimmten Mailadressen löschen.

    Code
    postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /mail@domain\.com/ { print $1 }' | tr -d '*!' | postsuper -d -

    Das funktioniert problemlos. Wie muss ich das aber umsetzen, wenn ich eine Variable nutzen möchte?

    Bash
    #!/bin/bash
    
    MAILADDRESS="mail@domain\.com"
    
    postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } "/$MAILADDRESS/" { print $1 }' | tr -d '*!' | postsuper -d -


    So funktioniert es nicht. Wo liegt mein Fehler?

  • Shellvariablen in awk zu verwenden ist tricky.

    Versuche es mal auf diese Weise:

    Code
    awk -v var="$MAILADDRESS" 'awkbefehl, nun mit var'

    ...

    In deinem Fall musst du dann die slashes evtl. in die Zuweisung der Variablen packen:

    Code
    var="/$MAILADDRESS/"

    Einfach mal damit rumprobieren. ;)

  • du meinst es sicher so


    Bash
    #!/bin/bash
    
    MAILADDRESS="mail@domain.com"
    
    postqueue -p | tail -n +2 | awk -v VAR="/$MAILADDRESS/" 'BEGIN { RS = "" } "VAR" { print $1 }' | tr -d '*!' | postsuper -d -


    es werden immer noch alle Mails gelöscht.