 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
18.04.2006, 17:21
|
#1
|
|
TP-Junior
Registriert seit: Apr 2006
Ort: Bayern
|
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
|
|
|
18.04.2006, 18:26
|
#2
|
|
TP-Junior
Registriert seit: Mar 2006
Ort: Berlin
|
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
|
|
|
19.04.2006, 14:41
|
#3
|
|
TP-Junior
Registriert seit: Apr 2006
Ort: Bayern
|
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
|
|
|
19.04.2006, 15:14
|
#4
|
|
TP-Junior
Registriert seit: Mar 2006
Ort: Berlin
|
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).
|
|
|
19.04.2006, 15:51
|
#5
|
|
TP-Junior
Registriert seit: Apr 2006
Ort: Bayern
|
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
|
|
|
19.04.2006, 16:18
|
#6
|
|
TP-Junior
Registriert seit: Mar 2006
Ort: Berlin
|
Hallo
Schön das ich dir helfen konnte.
Schade das man damit kein Geld verdienen kann.
MfG
klaus_harrer
|
|
|
19.04.2006, 16:50
|
#7
|
|
TP-Junior
Registriert seit: Apr 2006
Ort: Bayern
|
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
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:44 Uhr.
|
 |