2012-04-04 16 views
1

Kann ich wissen, warum "~" und "+$" in diesem Shell-Skript verwendet wird. Dies ist ein Teil des Skripts Löschen von Dateien älter als bestimmte Tage.Verwendung von Dollar und Tilde

Ich kann verstehen, dass dieser Teil des Skripts verwendet wird, um zu überprüfen, ob wir Zahlen oder Alphabete eingeben.

+2

Sie müssen die rechte Seite * nicht * zitieren, wenn Sie die bash Version 4 verwenden. Wenn sie in Anführungszeichen steht, interpretiert bash sie als Literalzeichenfolge. Es ist nicht wirklich klar dokumentiert, aber [die Manpage sagt] (http://www.gnu.org/software/bash/manual/bashref.html#index-g_t_005b_005b-57): "Jeder Teil des Musters darf zitiert werden um zu erzwingen, dass es als eine Zeichenfolge angepasst wird " –

Antwort

6

Die =~ Operator bedeutet „true, wenn der String auf der linken Seite auf der rechten Seite mit dem regulären Ausdruck übereinstimmt, sonst false“.

^[0-9]+$ Mittel suchen für eine Folge von einer oder mehrere (das ist die +) Zeichen im Bereich von 0 bis 9 (das ist [0-9]), die den Anfang der Zeichenfolge (^) und endet am Ende der Zeichenkette beginnen ($).

Dies ist Basis Bash und Regex, konsultieren Sie the Bash manpage für weitere Details.

1

= ~ ist ein regulärer Ausdruck Spiel

$ ^[0-9]+$ Teil des regulären Ausdrucks ist und es bedeutet das Ende des String

Google „reguläre Ausdrücke“ für ein Tutorial zu erreichen oder Führung

1

die =~ ist der Regex Operator und die + gehört das Muster [0-9]+, nicht die $. Die Bedingung testet, ob der Wert der Variablen FILE_AGE mit dem Muster [0-9]+ (eine oder mehrere Ziffern) zwischen ^ (Anfang der Zeile/Zeichenfolge) und $ (Ende der Zeile/Zeichenfolge) übereinstimmt.