string=123456
if [ $string == 123456 ]; then
echo 123
fi
Das funktioniert gut, aber wenn ich == zu = ~ wechsle, bekomme ich folgenden Fehler:
./test: line 3: [: =~: binary operator expected
bash
shell-script
Lumify
quelle
quelle
=~
ist in diesem Fall falsch.=~
vergleicht das Muster (linke Seite der Aufgabe) mit einem regulären Ausdruckregex
auf der rechten Seite des Assinments. Ein regulärer Ausdruck in seiner einfachsten Form wird übergeben wie'[0-9][0-9]'
123456
eine gültige REAntworten:
Bash ‚s Regex Matching funktioniert nur in doppelten eckigen Klammern
[[ ... ]]
:quelle
[[ ... ]]
, da dort keine Wortteilung oder Pfadnamenerweiterung erfolgt. Sie werden nur benötigt, wenn einzelne Klammern[ ... ]
(auf beiden Seiten) und rechts von der doppelten Klammer verwendet werden.