PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash-Skript, grep und Variablen durchsuchen



der_angler
05.07.07, 13:32
Nabend,

ich glaube ich habe da mal eine dumme Frage. Und zwar versuche ich verzweifelt einen kleines Skript zu schreiben was als Parameter ne Zeichenfolge übergeben bekommt und davon ausgehend welche Zeichen darin enthalten sind bestimmte Aktionen ausführt.
Okay, ich dachte mir ist das kein Problem, und schwupps habe ich mir die diversen Shell-Programmierungs-Howtos im Internet gesucht und durch gelesen, aber irgendwie nicht das passende gefunden (habe also schon mal "gegoogelt").
Aber mal zur Erklärung mein Problem:

Ich bekomme in der Variable "$1" z.Bsp. folgende Zeichenkette übergeben:

$1="XV.Lost.S03E03.fdsdfs.(DivX)sfdsdf.avi"
Jetzt soll das Skript hergehen, am besten mit ner Select-Case Verzweigung und folgendes machen:

select $1
case "lost"
Befehl1;;
case ".rar"
Befehl2;;
case "Weihnachten"
Befehl3;;
.
.
.
Das Besondere dabei ist jedoch, das
1. die Groß- und Kleinschreibung NICHT(!) beachtet werden soll, d.h. das Skript soll sowohl "Lost", "lost", "lOSt" also auch "LOST" finden und den gleichen Befehl ausführen.
2. ich nur nach einem Teil(!) der zeichenkette suche. D.h. wenn nach dem Wort "lost" noch etwas kommt, soll er trotzdem den entsprechenden Befehl ausführen.

Im obigen Beispiel würde das heißen das er den "Befehl1" ausführen müsste, gleichgültig wie das Wort "lost" geschrieben ist und gleichgültig ob vor oder nach dem Wort "lost" noch andere Sachen stehen.

Soweit verstanden was ich will?

So, ich habe jetzt mal ne ganze Weile mit grep & Co. experimentiert, aber leider ohne Erfolg.
Deswegen meine Bitte, kann mir einer von euch Profis kurz die 2-3 zeilen sagen die mich der Lösung näher bringen?

403
05.07.07, 13:58
X="$1"

echo $X | grep -qi lost liefert dann den Exit Code 0, falls lost in $1 existiert.
wobei Du lost auch durch eine Variable ersetzen kannst.

Happy Shell Hacking.

Edit: Das findet allerdings dann nur lost und nicht los, also nur
$1 exact und keine Teile davon.

der_angler
05.07.07, 14:03
okay, aber ist dabei dann auch egal wie das Wort "lost" geschrieben ist? D.h. beachtet obiges Beispiel dann die Groß- und Kleinschreibung oder findet er jedes "lost" egal ob großß oder klein gechrieben?

403
05.07.07, 14:06
ja, aber er findet eben nicht los.

der_angler
05.07.07, 14:18
perfekt, danke!

der_angler
06.07.07, 13:13
Hmm, vielleicht noch jemand ne idee wie ich das ganze in ne "Select-Case"-Anweisung packen kann?

temir
08.07.07, 19:48
Schau dir mal die init-Scripte an, da findest du die Beispiele für case.