2016-05-04 5 views
1

Ich lese ein Shell-Skript in Unix. Ich habe auf die unterhalb der Linie kommen:

if [[ ! $1 =~ ^# ]]; 

ich das Teil zu verstehen, die auf der linken Seite des Gleichheitszeichen ist aber was bedeutet ~^# Mittel.

Antwort

2

Nach http://wiki.bash-hackers.org/syntax/ccmd/conditional_expression der =~ ist:

<STRING> =~ <ERE> <STRING> gegen den erweiterten regulären Ausdruck geprüft <ERE>-TRUE auf ein Spiel

So ist die ^# ein erweiterter regulärer Ausdruck ist. Seit # ist kein Sonderzeichen in erweiterten Regex. Die Bedeutung von if prüft, ob die Zeichenfolge in $1 nicht mit # beginnt. So auf der Kommandozeile

$ if [[ ! '#' =~ ^# ]]; then echo matches; else echo no match; fi 
no match 
$ if [[ ! 'b' =~ ^# ]]; then echo matches; else echo no match; fi 
matches 
1
  • Die ~ ermöglicht passende POSIX regulären Ausdruck zu verwenden ().
  • Die ^ ein Sonderzeichen, die den Anfang einer Zeile
  • werten

In Ihrem Fall bedeutet ^# eine Linie mit # beginnen. Dann kümmert sich Ihr Zustand nur um Zeilen, die nicht mit # beginnen.

Beim Shell-Scripting sind Zeilen, die mit # beginnen, Kommentare, die vom shell nicht als Befehle ausgewertet werden.

Verwandte Themen