bash-Skript zur überwachung Datei-name beginnt mit dem erwarteten string
Läuft auf OS X mit einem bash-Skript:
sourceFile=`basename $1`
shopt -s nocasematch
if [[ "$sourceFile" =~ "adUsers.txt" ]]; then echo success ; else echo fail ; fi
Den oben genannten Werken, aber was ist, wenn der Benutzer Quellen eine Datei namens adUsers_new.txt
?
Habe ich versucht:
if [[ "$sourceFile" =~ "adUsers*.txt" ]]; then echo success ; else echo fail ; fi
Aber die wildcard funktioniert nicht in diesem Fall.
Ich Schreibe dieses Skript, um zu ermöglichen, dass der Benutzer über die verschiedenen Iterationen der source file name, was beginnen muß mit aduser
und haben die .txt
Datei-Erweiterung.
Ich glaube, Sie müssen nicht zitieren, die RHS der
=~
Betreiber.InformationsquelleAutor chop | 2014-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
bash
Sie können die ersten 7 Zeichen der shell-variable mit:und die letzten vier mit:
Bewaffnet mit diesem wissen, verwenden Sie einfach die Ausdrücke, wo Sie normalerweise verwenden würden, die variable selbst, etwas wie das folgende Skript:
Sehen Sie es in Aktion mit der folgenden Transkript:
InformationsquelleAutor paxdiablo
=~
- operator benötigt regexp, nicht wildcard.==
akzeptiert wildcards, aber Sie sollte nicht zitiert werden:Kannst du auch eine regexp natürlich auch, aber es wäre ein bisschen overkill:
Bitte beachten Sie, dass regexp ist standardmäßig geöffnet (
a
= =.*a.*
), während glob geschlossen ist (a
!=*a*
).InformationsquelleAutor Dmitry Alexandrov