+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Shell Script - for-Schleife; Leerzeichen umgehen

  1. #1
    TP-Junior leobase macht alles soweit korrekt
    Registriert seit
    Apr 2006
    Ort
    Bayern
    Beiträge
    5

    Shell Script - for-Schleife; Leerzeichen umgehen

    Guten Tag alle zusammen,

    ich bin ab heute neu im Forum, und hätte da auch gleich eine Frage!

    Ich versuche mit einem Shell-Script auf Mail-Ordner gewisse MaildirACLs zu setzen, soviel als Hintergrund.

    Nun mein Problem, ich habe eine Datei, in der befinden sich die Namen der Mail-Ordner z.B.:

    .Projekt Auftrag Test
    .Projekt Auftrag Test.1
    ...
    ...

    Zum setzen der Rechte muss der Befehl in folgendem Format abgegeben werden:

    maildiracl -set /home/vmail/test-gruppe/Maildir "INBOX.Projekt Auftrag Test" user=$fname +ceilrstwx
    bzw.
    maildiracl -set /home/vmail/test-gruppe/Maildir "INBOX.Projekt Auftrag Test.1" user=$fname +ceilrstwx

    Nun würde ich es gerne bewerkstelligen, das ich den Part "INBOX.Projekt Auftrag Test" (mit den Anführungszeichen) mir aus dieser Datei hole.

    Kann mir jemand sagen, wie ich in jede Zeile vor jeden Ordner-Namen in der Datei ein "INBOX und abschließend wieder ein " einfügen kann.

    Alternativ kann mir vielleicht jemand dabei helfen, wie ich der for-Schleife beibringe, das ein Wert jeweils mit einem "." (Punkt) beginnt und mit einem "$" (Dollarzeichen) aufhört. Das könnte ich mit dem Befehl cat hinbekommen.

    Solltet Ihr noch Informationen benötigen, lasst es mich wissen!

    Greetz

    leobase

  2. #2
    TP-Junior klaus_harrer macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Ort
    Berlin
    Beiträge
    24
    Hallo

    Hier ein kleiner Denkanstoß.
    Mit sed kannst du genau eine Zeile ausgeben:

    maildiracl -set /home/vmail/test-gruppe/Maildir $(sed -n 3p datei) user=$fname +ceilrstwx

    Diese Beispiel gibt die dritte Zeile deiner erstellten Datei aus.

    MfG
    klaus_harrer

  3. #3
    TP-Junior leobase macht alles soweit korrekt
    Registriert seit
    Apr 2006
    Ort
    Bayern
    Beiträge
    5

    Sed

    Hallo klaus_harrer, Hallo Forum

    vielen Dank für den Denkanstoß!

    Vielleicht kannst du mir nochmal weiterhelfen.
    Wie du mir gezeigt hast, kann man mit sed eine Zeile ausgeben lassen, um dies aber nun für alle Zeilen durchführen zu können, habe ich mir gedacht, müsste man einfach die Zeilennummer inkrementieren - so ist mein bisheriger Ansatz:

    for (( i = 1; i <= 2; i++))
    do
    f=$(sed -n '$ip' /tmp/test-ordner.txt)
    maildiracl -set /home/vmail/test-gruppe/Maildir "INBOX$f" user=$fname +ceilrstwx
    done


    Ich initialisiere i mit 1 und (hier) im Test wird bis 2 erhöht. Leider versteht er anscheinend aber " '$ip' " vollkommen falsch, er gibt mir nämlich den folgenden Fehler aus:

    INBOXp: Invalid argument
    INBOXp: Invalid argument

    Ich verstehe es so, daß er die Variable $i nicht auflösen kann, p bleibt übrig, p wird in die Variable f geschrieben und dadurch versucht er auf INBOXp zuzugreifen, was es natürlich so nicht gibt.

    Wie könnte ich die Zeilennummer inkrementieren, das er es auch versteht?!

    Ich muss auch zugeben, daß ich nicht so der begnadete Scripter bzw. Programmierer bin, aber ich erweitere mein Wissen immer wieder gerne.

    Vielen Dank für Lösungsvorschläge!

    Greetz leobase

  4. #4
    TP-Junior klaus_harrer macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Ort
    Berlin
    Beiträge
    24
    Hallo

    Ich denke das Problem liegt eher daran das die Variable $ip statt $i erkannt wird.
    probiers es mal wie folgt:

    f=$(sed -n "${i}p" /tmp/test-ordner.txt) oder
    f=$(sed -n "$i p" /tmp/test-ordner.txt)

    Würde mich über ein Feedback freuen welche Version funktioniert.

    MfG
    klaus_harrer
    Geändert von klaus_harrer (19.04.2006 um 15:20 Uhr)

  5. #5
    TP-Junior leobase macht alles soweit korrekt
    Registriert seit
    Apr 2006
    Ort
    Bayern
    Beiträge
    5

    sed - klappt

    Hallo klaus_harrer,

    fettes Danke für die Hilfe, es funktionieren beide Varianten!
    Man das ich da nicht selbst drauf gekomen bin. Sowas lässt sich aber nachher natürlich immer leicht sagen!

    Und du hattest auch damit recht, daß er die Variable falsch erkannt hat statt $i - $ip.

    Also echt noch mal - vielen - vielen - Dank, das erspart mir mehrere Tage stupide copy&paste Arbeit!!

    Greetz leobase

  6. #6
    TP-Junior klaus_harrer macht alles soweit korrekt
    Registriert seit
    Mar 2006
    Ort
    Berlin
    Beiträge
    24
    Hallo

    Schön das ich dir helfen konnte.
    Schade das man damit kein Geld verdienen kann.

    MfG
    klaus_harrer

  7. #7
    TP-Junior leobase macht alles soweit korrekt
    Registriert seit
    Apr 2006
    Ort
    Bayern
    Beiträge
    5

    Geld

    Hallo klaus_harrer,

    ja leider, aber man kann das Wissen wenigsten für seine Sysadmin-Tätigkeiten nutzen - und verdient so unterm Strich auch Geld dafür!

    Greetz leobase

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51