Chcę sprawdzić, czy zmienna ma prawidłowy rok, używając wyrażenia regularnego. Czytając instrukcję basha , rozumiem, że mogę użyć operatora = ~
Patrząc na poniższy przykład, spodziewałbym się komunikatu „nie OK”, ale widzę „OK”. Co ja robię źle?
i="test"
if [ $i=~"200[78]" ]
then
echo "OK"
else
echo "not OK"
fi
regex
bash
conditional
idrosid
źródło
źródło
=~
.Odpowiedzi:
Został zmieniony między 3.1 a 3.2:
Więc użyj go bez cudzysłowów w ten sposób:
i="test" if [[ $i =~ 200[78] ]] ; then echo "OK" else echo "not OK" fi
źródło
a +b
.a\ \+b
do usuwania spacji i znaku plus.Potrzebujesz spacji wokół operatora = ~
źródło