IF-Anweisung - Bedienung entziffern

B

barti

Hallo liebe Community,

ich bin gerade dabei ein altes Shell-Script an neue Eingabe anzupassen.
Drei IF-Anweisungen sind für mich nicht verständlich, und zwar:
***
if ((FIRSTLOOP==1)&&($0!~/^\[.*.\]/)&&($0!~/^$/))
{
if ($0!~/^#.*/)
{
printf ("%s%c",$0," "); <-- ist eigentlich ein AWK-Teil, deshalb printf.
}
};
if (($0~/^\[.*.\]/)&&($0!~SEARCHSECTION))
{
FIRSTLOOP=0;
};
***
Kennt sich vielleicht jemand damit aus, und könnte mir sagen was für eine Bedienung diese reguläre Ausdrücke generieren?

Danke im Vorraus!

Grüße
Barti
 
Dass das ein Shell-Skript ist, glaube ich eher nicht, da das viel mehr nach Perl aussieht. Und um diese Statements zu verstehen, musst du sie einfach nur mal logisch zerlegen, denn komplizierte Regexen sind da nicht wirklich drin. Diese beschränken sich auf:
- /^\[.*.\]/
- /^$/
- /^#.*/
- /^\[.*.\]/
Der Rest sind simple Bedingungen. Du solltest dir einfach mal angewöhnen vor und nach Operatoren ein Freizeichen zu setzen und ggf. auch geklammerte Teile in Bedingungen zu separieren. Das erhöht die Lesbarkeit enorm. Aus
if ((FIRSTLOOP==1)&&($0!~/^\[.*.\]/)&&($0!~/^$/))
wird dann ganz einfach
if ( (FIRSTLOOP == 1) && ($0 !~ /^\[.*.\]/) && ($0 !~ /^$/) )
und schon kann man sehen, was da passiert und erkennt, dass es 3 verschiedene Bedingungen sind. Und als Linux-User kannst du dir nun einfach den kregexpeditor nehmen und dir damit die Regexen visuell darstellen und wirst sehen:
- /^\[.*.\]/ <- matcht alles, was am String-Anfang in eckigen Klammern steht
- /^$/ <- Was das soll, ist mir irgendwie unklar. Seltsame Empty-String-Abfrage? ^ = steht am Anfang des Strings, $ = steht am Ende des Strings. Also... am Anfang und am Ende des Strings steht nichts? Hm... vielleicht hat ja jemand 'ne logischere Erklärung.

Und sonst kann ich dir sehr http://www.regular-expressions.info/reference.html an's Herz legen. Schön übersichtlich sind dort die wichtigsten Special-Chars von Regexen dargestellt.
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Queue für copy Script

awk skript: Probleme mit if und else Anweisungen

Hilfe bei Scriptanpassung für VMWare 5.1 HA und USV Shutdown

wirre zeichen :(

Zurück
Oben