Also ich möchte in einem Shellscript eine Eingabe darauf überprüfen ob überhaupt etwas eingetippt wurde.
Code: Alles auswählen
{{{
read IN
if [[ "$IN == "[.]\+" ]] ; then
blabla
fi
}}}
Code: Alles auswählen
{{{
read IN
if [[ "$IN == "[.]\+" ]] ; then
blabla
fi
}}}
Code: Alles auswählen
#!/bin/sh
read IN
if [ -z "$in" ]; then
echo invalid;
fi
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Das ist eine Frage der Portabilitaet und Performance. Die Bash bringt im Gegensatz zur POSIX-konformen Shell einen Haufen extra-Features mit, u.a. [[. Wenn man so ein Skript auf einem System ohne Bash laufen laesst, wird es syntaktische oder logische Fehler geben (hoffentlich ersteres). Die Performance ist insofern relevant, als dass die Bash einfach fetter ist, die Binary ist groesser, sie braucht mehr Zeit zum Starten, die ganzen extra-Features machen den Parser komplexer, etc.. Regulaere Ausdruecke, engl. regular expressions, kurz RegEx, benoetigen wesentlich mehr Rechenzeit als einfacher String-Vergleich. Abkuerzungen wie -z und -n sollten sogar noch fixer sein.halimbo hat geschrieben:Wieso denn unnötige Bash Syntax, und was ist Regex?
Ich schreib' da einfach "Danke" und erklaere vielleicht, warum ich einen Post gut/hilfreich finde...halimbo hat geschrieben:Einen bedanken Button habt ihr hier im Forum wohl nicht
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
"Pattern Matching" sind Konstrukte mit Wildcard-Zeichen wie beim File Globbing (ls *.[ch]), also keine RegEx-Vergleiche. Letzteres geht in der Bash mit dem Operator "=~".When the == and != operators are used, the string to the right of the operator is considered a pattern and matched according to the rules
described below under Pattern Matching.
Code: Alles auswählen
[ "$in" ]